【发布时间】:2020-09-21 10:56:02
【问题描述】:
检查 Kleisli 定义,
在 Cats 以及函数式和反应式领域建模中
但是我还不能掌握它的用处。如果我们谈论组合 Monadic 函数的情况,例如在返回 monad 的函数中,即 A => F[B],我看不出它实际上添加了什么来简单地对链进行排序
flatMap[A, B](ma: F[A])(f: A => F[B]): F[B]
确实,能够链接上述内容类似于
如果你有一个函数 f: A => F[B] 和另一个函数 g: B => F[C],其中 F 是一个单子,那么你可以组合它们得到 A => F[C]
"Kleisli" 的真正附加价值是什么?
【问题讨论】:
-
Kleisli 箭头是在上下文中返回值的函数,它们由 Kleisli 组合组成。
flatmap是上下文中的应用程序,而 Kleisli 组合是上下文中的组合,并导致无点样式代码。 -
无点样式代码????
-
flatMap用于组成 Monads 的 效果值,Kleisliarrow被使用组合产生效果值(即Monads)的函数。因此,这只是您是否要组合值或函数;即与y = g(f(x))VSh = f andThen g-y = h(x)的区别相同。
标签: scala functional-programming purely-functional