我不久前开始使用Haskell,现在正在教我自己的monad,所以我在这里为自己想出了一个愚蠢的例子来帮助我理解monad的一个方面.
给定Certainty定义为的类型
data Certainty a = Definitely a | Perhaps a | Nope
Run Code Online (Sandbox Code Playgroud)
和Monad所述类型的实例
instance Monad Certainty where
return = ...
Run Code Online (Sandbox Code Playgroud)
如何return为Certainty及其每个数据构造函数定义该方法?
你必须选择一个 - 根据我建议的命名
return value = Definitely value
Run Code Online (Sandbox Code Playgroud)
记得那return a >>= f一定是f a
绑定应该是
(Definitely a) >>= f = f a
(Perhaps a) >>= f = case f a of
Definitely b -> Perhaps b
Perhaps b -> Perhaps b
Nope -> Nope
Nope >>= _ = Nope
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |