Haskell 单子证明

Haskell monadic proof

对于数学专家(我不是,也不是 Haskell 专家):

m >> k = m >>= \_ -> k

这'monad' 类型检查和编译。这是为了从数学上证明 m >> k(省略 return 值)和 m >>= \_ -> k(带有 return 的 monad,但没有 lambda)是相同的,还是我实际上可以把价值观放进去?只是好奇。不是阻塞问题。

这是中缀形式的函数 >> 的定义。

相当于更平常的(>>) m k = ...

这里的括号是为了说明Haskell我们使用前缀形式的运算符

我假设您正在阅读序曲中的以下内容 http://hackage.haskell.org/package/base-4.12.0.0/docs/src/GHC.Base.html#%3E%3E

这不是证明。这更类似于 OOP 接口中方法的定义。

里面定义了class Monad(class中的Haskell更像是一个接口);它定义了一个运算符 >> 应该被定义。并提供了默认定义。默认定义为 m >>= \_ -> k.