【发布时间】:2015-07-02 21:36:50
【问题描述】:
我正在尝试实现一个 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 的标准实现。但是,这不会编译,因为编译器会抱怨:
没有 (Applicative Maybee) 的实例
同样,一旦给出 Applicative,他想要一个 Functor 实例。
所以:一个简单的问题:在实现 Monad 之前我必须始终实现 Functor 和 Applicative 吗?
【问题讨论】:
-
我预计在 GHC 7.10 发布之后会有很多关于此的问题。我们应该创建一个 Functor-Applicative-Monad 提案 标签吗?
标签: haskell monads functor applicative fam-proposal