我很好奇Haskell中的“未定义”值。这很有趣,因为您可以将其放置在任何地方,Haskell会很高兴。以下都可以

[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

但是,否则,这仅仅是多态性和非严格性的自然结果。

关于haskell - 'undefined'在Haskell中如何工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16748416/

10-13 06:04