gpt4 book ai didi

haskell - 'bottom'(⊥)在Haskell函数定义中的作用是什么?

转载 作者:行者123 更新时间:2023-12-03 13:15:21 25 4
gpt4 key购买 nike

看不懂 bottom 的作用( _|_ )在 Haskell 函数定义中。

zip 的定义例如将其描述为“非常懒惰”,因为

zip [] _|_ = []

但我不清楚这与
zip [] _ = []
_|_是什么角色|在上面的函数定义中播放?特别是,它与使用 _ 有何不同? ?

更新和注意:优秀答案的读者会自己发现,这些答案的关键部分,值得在这里提出,是 实际上,没有 ( and cannot) 出现在 Haskell 函数定义中。 Read on .

最佳答案

底部本质上是一种花哨的代数方式 undefined .

如果你试试这个,你会明白为什么 zip它的右手参数是懒惰的:

λ> zip [] undefined
[]
λ> zip undefined []
*** Exception: Prelude.undefined

这是因为 undefined只有在您尝试评估它时才会失败。

您可能会感到困惑 _|__因为它的呈现方式。我会说清楚: zip [] _|_ = [] 行不作为模式匹配,而是作为方程,说明 zip [] _|_ 的相等性和 [] .也就是说,这不是有效的 Haskell 代码,而是一种表示“我不关心第二个参数”的符号化、抽象代数方式。

zip 的定义中您当然可以使用 _ ,但这无关紧要。您可以使用任何名称,只要它不是构造函数匹配模式,例如 (Just x)(a,b) .值将保持未计算,直到它们必须在纯代码中进行模式匹配。

您可以阅读更多关于惰性评估的信息 here .

您可以阅读更多关于底部 herehere .

关于haskell - 'bottom'(⊥)在Haskell函数定义中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32505911/

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