假设我有这样的功能:
myFunction :: Maybe a -> b
但是用Nothing
调用它是没有任何意义的 - Just a
是唯一有意义的值。是否可以在myFunction
?
我知道我总能做到以下几点,但对我来说似乎不太干净:
myFunction Nothing = undefined
答案 0 :(得分:5)
但用Nothing称之为没有任何意义 - 只有a是唯一有意义的值
这意味着您正在寻找myFunction :: a -> b
。
顺便说一下,只能将特定的一组类型值映射到其他东西的函数不是完全的。如果您使用它们,则总是冒险使用undefined
。在这种特殊情况下,它看起来像是多余的纯度。
此外,还有一个部分功能fromJust
可以将Maybe a
转换为a
并抛出Nothing
的异常。 myFunction . fromJust
是:: Maybe a -> b
。