我正在尝试实现一个 Monad 实例。作为一个更简单的示例,假设如下:
data Maybee a = Notheeng | Juust a
instance Monad Maybee where
return x = Juust x
Notheeng >>= f = Notheeng
Juust x >>= f = f x
fail _ = Notheeng
据我所知,这应该是 Maybe 的标准实现。但是,这不会编译,因为编译器抱怨:
没有(应用 Maybee)实例
同样,一旦给出应用性,他想要一个函子实例。
所以:简单的问题:在实现 Monad 之前,我必须始终实现 Functor 和 Applicative 吗?
是的,以前不是这样的,这是 ghc7.10 中引入的一个更改,名称为函子-应用-Monad 提案 https://wiki.haskell.org/Functor-Applicative-Monad_Proposal.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)