haskell - 'undefined' 如何在 Haskell 中工作

标签 haskell undefined

我对 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 并没有什么特别之处.它只是一个特殊值——您可以用无限循环、崩溃或段错误来表示它。编写它的一种方法是崩溃:

undefined :: a
undefined | False = undefined

或循环:
undefined = undefined

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

由于 Haskell 是惰性的,您仍然可以在计算中使用这些值。例如。
 > length [undefined, undefined]
 2

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

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

相关文章:

debugging - 我如何使用 GHC.Exts.breakpoint?

具有许多构造函数的用于 ADT 的 Haskell Zipper

haskell - 这种折叠和迭代的模式是什么?

undefined - PHPStorm : List all undefined and unused variables

javascript - Uncaught ReferenceError : showCurrentPage is not defined at HTMLButtonElement. onclick

php - Constant、isset 和空评估

haskell - 在 Haskell 中从无限循环(C 程序)中获取每个换行符的数据

Haskell Riak 驱动程序 : Making a simple 'put' operation

php 构造函数未定义属性

C++ 错误 'Undefined reference to Class::Function()'