8

我在 Haskell 有一些经验,目前正在学习 Scala。我想知道Scala中是否有与Monads等效的东西?

4

4 回答 4

12

你可能想看看scalaz;它受到 Haskell 的强烈影响。事实上,经常有人问主要贡献者之一为什么他们不只是使用 Haskell,因为他们似乎非常喜欢它!

Scalaz 大量使用隐式来用它们的 monad 来装饰结构。例如:

val fibs = (0, 1).iterate[Stream]( i => i._2 -> (i._2 + i._1) ).map(_._1)
println( fibs.take(10) )
于 2010-02-10T13:42:11.753 回答
9

我认为值得注意的是,Scala 的“for-comprehension”等同于 Haskell 的单子“do”

于 2010-02-11T00:45:38.853 回答
0

Option 和 List 都是单子。我也相信 Either 的左右投影也是单子。

于 2011-10-02T18:41:25.533 回答
0

Scala 标准库中没有明确的 monad 概念(没有适当的 trait/class 或 typeclass)。

Scala 以一种特别的方式处理这个问题,有关详细信息,请参阅Scala by example的部分。

于 2016-02-12T10:48:49.407 回答