我很好奇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/