2016-11-09 1 views
3

나는 MF이 모나드 인 M[F[A]]과 관련된 내포물에 대한 간단한 모나드 트랜스포머를 사용해 왔습니다. S이 다른 모나드 인 경우 M[F[A]]M[S[A]]을 for comp로 함께 사용할 수 있습니까? 예를 들어스칼라의 모나드 트랜스포머

:

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

a가하는 ListT[Future, Int]bOptionT[Future, Int]이 필요하지만 이러한 구성하지 않습니다 필요로 내가 다른 변압기를 사용해야합니까? 이것은 for comp에서 사용하는 순서에 따라 다릅니 까?

답변

4

모나드 트랜스포머는 F[G[X]] 유형의 두 값을 구성하는 데 도움을줍니다. 당신이 Monad[G]이있는 경우이 G[X]을 구성하는 방법을 알고 그들이 사실을 활용하기 때문에

다른 측면에서, 모나드 변압기 F[G[X]]와 함께 작동합니다.

지금, 당신은 GHMonad 인스턴스를 가질 것을 주장하는 경우에도 F[G[X]F[H[X]]의 경우에, 당신은 여전히 ​​그들을 구성하는 일반적인 방법이 없습니다.

F[G[X]]F[H[X]]에는 모나드 트랜스포머에 대한 일반적인 해결책이 없습니다.

관련 문제