为什么运行unsafeRunSync()两次会破坏RT

时间:2017-11-10 11:49:10

标签: scala scala-cats

我有以下应用程序,我无法弄清楚,为什么运行它两次它打破RT:

val program = for {
  _ <- IO { println("Welcome to Scala!  What's your name?") }
  _ <- IO { println(s"Well hello, foo") }
} yield ()

program.unsafeRunSync()
program.unsafeRunSync()

我运行两次并得到相同的结果两次,为什么它会破坏RT?

1 个答案:

答案 0 :(得分:6)

这是因为val a = program.unsafeRunSync(); val b = program.unsafeRunSync()val a = program.unsafeRunSync(); val b = a不是同一个程序。如果表达式是RT,那么您可以内联它或将其自由计算出来。你不能在这里做到这一点。