Eff monad
看起来比monad变换器更好,更有用,可以用monad变换替换样板,但是Free monad
可以在执行和程序定义之间提供完全相同的结果,因为{{ {1}}看起来像开销。如果我错过了一些细微差别,请纠正我。
答案 0 :(得分:2)
Monad变形金刚是您希望每天为您使用的程序,例如,map
flatMap
T
和Task[Option[T]]
。{/ p} >
Free
和Eff
解决了一个不同的问题:它们允许您为您的程序编写多个解释器(这很可能对您的日常应用程序而言过度杀伤)。它们都用于构建monadic表达式。 Eff
允许您将解释的“分工”分成多个解释器,而使用Free
时,您通常会将表达式“一次性”从其Free
结构转换为另一个monad。