Scala中的应用组合物的实例

时间:2015-03-04 09:20:10

标签: scala scalaz applicative

这是我原来的questions

的后续内容

我知道monad不可合成,即如果M1[_]M2[_]是monad M2[M1[_]],则不一定是monad。例如,List[Int]Option[Int]是monad,但Option[List[Int]]不是自动 monad,因此我需要monad transformer将其用作monad (如here

我知道应用函子是可组合的。我想这意味着如果A1[_]A2[_]是适用的,那么A2[A1[_]] 总是一个应用程序。这是对的吗 ?

A1ListA2Option时,您能举例说明此类作品吗?你能举一个其他应用程序组成的例子吗?

1 个答案:

答案 0 :(得分:1)

我在前面的scalaz源中添加了一些相关的示例。我添加了使用组合Apply实例的示例(Apply是Applicative,没有point方法):

https://github.com/scalaz/scalaz/blob/series/7.2.x/example/src/main/scala/scalaz/example/ApplyUsage.scala#L132-L147

但是,对于我们M1[_]Applicative[M1]我们拥有M2[_]Applicative[M2]的任何M1[M2[_]]都是适用的,您可以获得Applicative[M1] compose Applicative[M2]

的适用实例