monad很强大,当有时我们要连续使用多个monad怎么办,例如在scala使用for将多个monad连接起来,这样可以避免使用匹配,如果可以做到的话将是非常方便,而Monad transformers就是出于这样的目的
We have seen how monads can help handling IO actions, Maybe,
lists, and state. With monads providing a common way to use such useful general-purpose tools, a natural thing we might want to do is using the capabilities of severalmonads at once. For instance, a function could use both I/O and Maybe exception
handling. While a type like IO
(Maybe a) would work just fine, it would force us to do pattern matching within IO do-blocks
to extract values, something that theMaybe monad
was meant to spare us from.
Enter monad transformers: special types that allow us to roll two monads into a single one that shares the behavior of both.
本文探讨了如何通过MonadTransformers将多种Monads的功能整合到单一Monad中,避免在使用如Scala等语言时进行复杂的模式匹配操作,使得I/O操作与异常处理等任务更加简洁高效。
2984

被折叠的 条评论
为什么被折叠?



