【发布时间】:2019-05-26 07:24:02
【问题描述】:
我是 Haskell 的初学者,我被 undefined 函数的类型签名吓了一跳。
我期待一些更简单的东西,但我在 Hackage 上找到了这个:
undefined :: forall (r :: RuntimeRep). forall (a :: TYPE r). HasCallStack => a
错误的特殊情况。预计编译器会识别这一点并插入更适合
undefined出现的上下文的错误消息。
你能解释一下这个签名是什么意思吗?
谢谢!
【问题讨论】:
-
首先,
undefined不是一个函数。但如果你还是个初学者,我就假装类型是undefined :: a。剩下的就是高级魔法了。 -
我知道我需要修改我的评论:
undefined不是语言(用户)级别的功能。但是,由于类约束HasCallStack =>,它在内部实现为函数。 -
如果您正在寻找类似 JavaScript 的
undefined或 Java 的null,您可能想要使用Data.Maybe。一个很好的介绍是learnyouahaskell.com/modules
标签: haskell types undefined forall type-signature