scala - 为什么单子(monad)不在scala中组成

标签 scala monads higher-kinded-types

当 Monad 是 Applicative 而 Applicative 是 Functor 时,为什么 monad 不组合。您可以在网络上的许多文章中看到这个继承链(我已经阅读过)。但是当 Functors 和 Applicatives 组成时,为什么 Monads 会打破这个?

有人可以在 scala 中提供一个简单的例子来演示这个问题吗?我知道这个问题很多,但是如果没有一个简单的例子就很难理解。

最佳答案

托尼·莫里斯 (Tony Morris) 发表了关于 monad 更改器(mutator)的演讲,很好地解释了这个精确的问题。

http://tonymorris.github.io/blog/posts/monad-transformers/

他使用haskell,但这些例子很容易翻译成scala。

关于scala - 为什么单子(monad)不在scala中组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33149471/

相关文章:

scala - 使用偏移量对数组进行分区

list ->> 运算符——Haskell 中的穷人循环?

scala - 如果 bound 是抽象类型成员,则具有上限的更高种类的类型构造函数不起作用

java - 在 Scala 中获得 "setter"的正确方法是什么?

scala - A1 类型的神秘成员 "default"=> B1

scala - Scala 中没有的等价物

haskell - 在 Reader resp 的情况下 Monad vs Applicative。 ((->)一)

haskell - 如何将 (Either String (a -> b)) 映射到 (Either String [(a -> b)])

scala - Scala 中的递归数据类型

scala - Scala中高级类型的类型约束