我不久前开始使用 Haskell,现在正在自学 monad,所以我在这里为自己想出了一个愚蠢的例子来帮助我理解 monad 的一个方面。
给定类型确定性
定义为
data Certainty a = Definitely a | Perhaps a | Nope
以及所述类型的 Monad
实例
instance Monad Certainty where
return = ...
如何为确定性及其每个数据构造函数定义方法return
?
最佳答案
你必须选择一个 - 根据我建议的命名
return value = Definitely value
记住return a >>= f
必须是f a
绑定(bind)可能应该是
(Definitely a) >>= f = f a
(Perhaps a) >>= f = case f a of
Definitely b -> Perhaps b
Perhaps b -> Perhaps b
Nope -> Nope
Nope >>= _ = Nope
关于haskell - 多个数据构造函数的 Monad 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37033545/