gpt4 book ai didi

haskell - 是否建议在 Haskell 中始终进行详尽的模式匹配,即使对于 "impossible"情况也是如此?

转载 作者:行者123 更新时间:2023-12-03 13:42:11 26 4
gpt4 key购买 nike

是否建议在 Haskell 中始终进行详尽的模式匹配,即使对于“不可能”的情况也是如此?

例如,在下面的代码中,我在 foldr 的“累加器”上进行模式匹配。我完全控制了累加器的内容,因为我创建了它(它不是作为输入传递给我的,而是在我的函数中构建的)。因此,我知道某些模式永远不应该匹配它。如果我力求永远不要出现“模式匹配不完全”错误,那么我会为其放置一个模式匹配,该错误只是带有“此模式不应该发生”的消息。很像 C# 中的断言。我想不出还有什么可做的。

在这种情况下,你会推荐什么做法,为什么?

这是代码:

gb_groupBy p input = foldr step [] input
where
step item acc = case acc of
[] -> [[item]]
((x:xs):ys) -> if p x item
then (item:x:xs):ys
else [item]:acc

不匹配的模式(由解释器报告)是:

警告:模式匹配并非详尽无遗
在另一种情况下:模式不匹配:[]:_

最佳答案

这可能更多的是风格问题。就个人而言,我会投入一个

_ -> error "Impossible! Empty list in step"

如果只是为了使警告静音:)

关于haskell - 是否建议在 Haskell 中始终进行详尽的模式匹配,即使对于 "impossible"情况也是如此?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/832992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com