10、Haskell 中的 Monad 类型类与常见 Monad 详解

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值