【发布时间】:2021-01-25 10:59:21
【问题描述】:
猫中 Monad Transformers 的一些定义。
EitherT[F[_], A, B] 是 F[Either[A, B]] 的轻量级包装器,它 可以很容易地将 Eithers 和 Fs 组合在一起。要使用 EitherT, 首先将 Either、F、A 和 B 的值转换为 EitherT,并且 然后使用组合器组合生成的 EitherT 值。
OptionT[F[_], A] 是 F[Option[A]] 上的轻包装。请讲 从技术上讲,它是 Option 的 monad 转换器,但你不需要 知道这对它有用意味着什么。 OptionT 可以更多 比直接使用 F[Option[A]] 更方便。
我理解这个概念,甚至看到一些有趣的讨论:Monad transformers down to earth by Gabriele Petronella
我了解 Reader Monad,以及 Kleisli 只是一个概括。
我不明白的是下面的声明,它说它是一个单子变换器。我们到底在堆叠什么?我没有看到 2 monad 被堆叠在这里....
Kleisli 可以看作是函数的 monad 转换器。记起 本质上,Kleisli[F, A, B] 只是一个函数 A => F[B], 与我们真正关心的价值一起工作, B,简单。 Kleisli 允许我们利用函数的效果和 让它们与任何其他 F[_] 的效果配合得很好。
有什么想法吗?
【问题讨论】:
标签: scala functional-programming monads monad-transformers