【发布时间】:2017-11-21 17:08:18
【问题描述】:
我正在试验 IO monad,这就是我写的:
val io: IO[String] = "asdfasdf".pure[IO]
val i: IO[Unit] = for{
str <- io
} yield {
println(str).pure[IO]
}
i.unsafePerformIO() // Performing io ops
代码不产生任何输出。以下代码依次按预期工作:
val io: IO[Unit] = "asdfasdf".pure[IO].flatMap(println(_).pure[IO])
io.unsafePerformIO() //prints asdfasdf
为什么?有什么区别?
【问题讨论】: