单子是Haskell语言中较难理解的概念,本文将以简明的语言介绍这一概念及其应用,由于通俗性与严谨性不可兼顾,本文会牺牲一定的严谨性()。
单子
Monad在Haskell中是一个类型类,中文通常翻译为单子,在GHC7.10以后它的定义如下:
1 | class Applicative m => Monad m where |
可以看出Monad是实现了一个(>>=)运算符的Applicative。而这个(>>=)运算符(Bind)类型古怪:它连接的左侧是一个Monad类型的值,右侧则是一个函数。
Identity单子
我们从最基本的例子开始。
Identity单子定义在Control.Monad.Identity中:
1 | newtype Identity a = Identity {runIdentity :: a} |
- 本文作者: Frankenstein
- 本文链接: https://salty-frankenstein.github.io/blog/2020/09/27/【函数式】二、单子/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!