函数式Monads模式初探—— Monad 概念
发布时间
阅读量:
阅读量
函数式
- Functional Programming
单子
Monad是一种用于组合函子应用的技术手段。在计算机科学领域,它常被用来表示计算过程。通过Monad,可以将那些与具体业务逻辑无关的通用程序行为进行抽象处理,例如用于管理并行操作(如Future)、异常处理(如Option和Try等)以及处理副作用的Monad结构。
作为构建数据类型的核心操作,flatMap与unit函数能够支持实现众多复杂的高阶函数功能。
单子程序的结构与实现
Monad确立了unit与flatMap两个核心函数的定义。所有Monad均属于Functor范畴,这是由于能够通过flatMap结合unit来实现map功能。因此,可以将Monad定义为继承自Functor特质的结构。
trait Functor[F[_]] {
def map[A, B](fa: F[A])(f: A => B): F[B]
}
trait Monad[M[_]] extends Functor[M] {
def unit[A](a: A): M[A]
def flatMap[A, B](ma: M[A])(f: A => M[B]): M[B]
}
全部评论 (0)
还没有任何评论哟~
