Monad 函数式编程中的一个概念, 在 Haskell 和 Scala 语言中用的比较多。
这个概念来源于数学中的范畴学,过于学术化,我看国内的文章介绍的很多,但是准确、清晰而简要的介绍的文章却没有看到。
我也不准备介绍,因为我对它的理解也不够深,这里引用 Functors, Applicatives, And Monads In Pictures一文中的图片和总结,来加深一下自己的理解。
- functors: you apply a function to a wrapped value using fmap or <$>
- applicatives: you apply a wrapped function to a wrapped value using <*> or liftA
- monads: you apply a function that returns a wrapped value, to a wrapped value using >>= or liftM
这篇文章已经被翻译成中文: Functor, Applicative, 以及 Monad 的图片阐释。
kotlin中文版: Kotlin 版图解 Functor、Applicative 与 Monad。