2016-11-09 57 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變壓器的通用解決方案。