Haskell 中“未定义”如何工作

2024-01-08

我对 Haskell 中的“未定义”值很好奇。它很有趣,因为你可以把它放在任何地方,Haskell 会很高兴。以下都是a-ok

[1.0, 2.0, 3.0 , undefined]  ::[Float]
[1, 2 ,3 undefined, 102312] :: [Int]
("CATS!", undefined)  :: (String, String)
....and many more

未定义在幕后是如何工作的?是什么使得拥有各种数据类型的数据成为可能?我是否可以定义一个可以放在任何地方的值,或者这是一些特殊情况?


没什么特别的undefined。它只是一个特殊值——您可以用无限循环、崩溃或段错误来表示它。一种写法是崩溃:

undefined :: a
undefined | False = undefined

或者一个循环:

undefined = undefined

它是一个特殊值,可以是任何类型的元素。

由于 Haskell 是惰性的,你仍然可以在计算中使用这些值。例如。

 > length [undefined, undefined]
 2

但除此之外,这只是多态性和非严格性的自然结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Haskell 中“未定义”如何工作 的相关文章

随机推荐