Eff monad和Free monad之间有所不同

时间:2017-07-11 16:15:12

标签: scala functional-programming

Eff monad看起来比monad变换器更好,更有用,可以用monad变换替换样板,但是Free monad可以在执行和程序定义之间提供完全相同的结果,因为{{ {1}}看起来像开销。如果我错过了一些细微差别,请纠正我。

1 个答案:

答案 0 :(得分:2)

Monad变形金刚是您希望每天为您使用的程序,例如,map flatMap TTask[Option[T]]。{/ p} >

FreeEff解决了一个不同的问题:它们允许您为您的程序编写多个解释器(这很可能对您的日常应用程序而言过度杀伤)。它们都用于构建monadic表达式。 Eff允许您将解释的“分工”分成多个解释器,而使用Free时,您通常会将表达式“一次性”从其Free结构转换为另一个monad。