Haskell 中的 Monad 类型类与常见 Monad 详解
1. Monad 类型类基础
1.1 Monad 类型类定义
Monad 是 Haskell 中的一个重要类型类,它是 Functor 和 Applicative 的逻辑发展。Monad 类型类的完整定义如下:
class Applicative m => Monad (m :: Type -> Type) where
(>>=) :: m a -> (a -> m b) -> m b
(>>) :: m a -> m b -> m b
(>>) = (*>)
return :: a -> m a
return = pure
从这个定义可以看出,要引入一个新的 Monad,我们只需要定义 >>= 运算符,其余函数可以根据 Applicative 完全定义。 >> 运算符在编写 Monadic 代码时具有美学意义,它只是将计算链在一起,产生效果并丢弃结果;而 return 主要是历史原因保留的,因为 Applicative 是在 Monad 之后很久才添加到 Haskell 中的,建议尽可能使用 pure 。
1.2 Monad 定律
Monad 类型类必须满足一些定律,就像 Functor 和 Ap
超级会员免费看
订阅专栏 解锁全文
2044

被折叠的 条评论
为什么被折叠?



