2016-11-09 59 views
3

我一直在尝试简单的Monad变形金刚,其中涉及M[F[A]],其中MF是monads。如果S是不同的monad,我怎样才能让M[F[A]]M[S[A]]一起工作?Scala中的Monad变形金刚

例如:

val a: Future[List[Int]] = ... 
val b: Future[Option[Int]] = ... 

a需要ListT[Future, Int]b需要OptionT[Future, Int]但这些都不构成,做我需要使用另一个变压器?这是否取决于我在补偿中使用它们的顺序?

回答

4

Monad变形金刚可以帮助您撰写F[G[X]]类型的两个值。

换句话说,monad变换器与F[G[X]]一起工作,因为它们利用了如果Monad[G]存在就知道如何编写两个G[X]的事实。

现在,在F[G[X]F[H[X]],即使你指出GHMonad情况下,你还没有将它们组成的一般方式。

恐怕作曲F[G[X]]F[H[X]]没有monad变压器的通用解决方案。