为什么我们需要Scala中的Monad变形金刚?

时间:2014-03-12 12:00:45

标签: scala functional-programming monads monad-transformers

我的理解如下:

假设M1M2是monad,即它们提供符合monadic法律的函数unitflatMap。很抱歉,无法为unit 创建flatMapM1[M2]。对于任何 unitflatMap,似乎M1M2总是。我不知道我们是否需要证明它。

因此,解决方案是为W创建包装 M1[M2],以便W[M1, M2] 为monad,并使用相反。此包装器W称为 Monad Transformer

我能理解吗?

2 个答案:

答案 0 :(得分:3)

你是对的。通常,它们用于需要组合monads属性的for-comprehension构造。

Monad变形金刚“一步一步”here

答案 1 :(得分:1)

埃里克·巴克(Erik Bakker)在Monad变形金刚上发表了一篇精彩的演讲,名为“期货期权,如何取消它们”(在YouTube上提供)。我发现它非常有用,因此我基于它制作了一个幻灯片:https://www.slideshare.net/pjschwarz/monad-transformers-part-1

enter image description here