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

问题描述 投票:8回答:2

我的理解如下:

假设M1M2是monad,即它们提供符合monadic定律的函数unitflatMap。不幸的是,我们无法为unit创建flatMapM1[M2]。看起来unitflatMap并不总是存在于任何M1M2。我不知道我们是否需要证明这一点。

因此解决方案是为W创建一个包装器M1[M2],这样W[M1, M2]就是一个monad,并使用它代替。这个包装纸W被称为Monad Transformer。

我理解正确吗?

scala functional-programming monads monad-transformers
2个回答
3
投票

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

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


1
投票

Erik Bakker在Monad变形金刚上有一个很棒的演讲,名为“期货期权,如何解开它们”(Youtube上有售)。我发现它非常有用,我制作了一个基于它的幻灯片:https://www.slideshare.net/pjschwarz/monad-transformers-part-1

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.