我的理解如下:
假设M1
和M2
是monad,即它们提供符合monadic法律的函数unit
和flatMap
。很抱歉,无法为unit
创建flatMap
和M1[M2]
。对于任何 unit
和flatMap
,似乎M1
和M2
不总是。我不知道我们是否需要证明它。
因此,解决方案是为W
创建包装 M1[M2]
,以便W[M1, M2]
为monad,并使用相反。此包装器W
称为 Monad Transformer 。
我能理解吗?
答案 0 :(得分:3)
你是对的。通常,它们用于需要组合monads属性的for-comprehension构造。
Monad变形金刚“一步一步”here。
答案 1 :(得分:1)
埃里克·巴克(Erik Bakker)在Monad变形金刚上发表了一篇精彩的演讲,名为“期货期权,如何取消它们”(在YouTube上提供)。我发现它非常有用,因此我基于它制作了一个幻灯片:https://www.slideshare.net/pjschwarz/monad-transformers-part-1