阅读本文后,我了解到>=>(Kleisli 箭头)只是组合函数的高阶函数,它返回“一元值”。例如:
val f: A => M[B] = ... val g: B => M[C] = ... val h: A => M[C] = f >=> g // 用 Kleisli 箭头组合 f 和 g
它看起来像是“简单”函数(即返回简单值的纯函数)的简单组合:
val f: A => B = ... val g: B => C = ... val h = f 然后 g; // 合成 f 和 g
现在我猜这个“简单”的构图andThen符合某些规律
- 身份:
f andThen g == g以及g andThen f == g身份功能:f[A](a:A):A = a - 关联性:
(f1 andThen f2) andThen f3==f1 andThen (f2 andThen f3)
现在我的问题:
- 是否
>=>符合那些法律,身份在哪里f(a:A) = M[a].unit(a)? - 我们能从这些法则中推导出一元法则吗?这些定律和一元定律等效吗?