스 카스를 배우고 있으며 이제는 모나드 IO
의 요지를 이해하려고합니다. 나는 입출력 모나드에 대한 this article를 읽고 간단한 예에게 자신을 실행하려고 : 예상대로스칼라의 IO 모나드 이해
val io = println("test").pure[IO]
println("before")
io.unsafePerformIO()
예, 그것은 작동합니다. 그것은 인쇄합니다
before
test
하지만 IO 모나드의 요지를 잡을 수 없습니다. 트릭이란 무엇입니까? 언급 된 기사에서 지정한 "대체물 유지"를 제외하고
대체가 너무 유용하지 않은 것처럼 보입니다. 설명해 주시겠습니까?
내가 생각할 수있는 것. 나는 몇 가지 특성을 가지고 상상 :
trait Reader{
def read(): List[Int]
}
trait Writer[T]{
def write(t: T): Unit
}
그래서 내가 (내 경우에는
List
) 모나드 값을 읽을 수있는 독자가있다. 컨테이너의 모든 값을 어딘가에 쓰고 트랜스포메이션을 수행해야합니다. 이 경우 IO Monad를 유용하게 사용할 수 있습니까?
감사합니다.하지만 IO [List [T]]를 변형하는 것에 대해 질문이 있습니다. 'Scalaz'는'IO' 모나드 용 변압기를 가지고 있습니까? 'IoT [T]'를 사용하는 것이 매우 편리 할 것입니다. –
만약 IO [List [T]]가 있다면 당신은 scalat에있는'ListT' 변환기가 필요합니다. –