【发布时间】:2022-01-25 02:02:57
【问题描述】:
我有两个程序的实现
def program_valid: IO[Unit] = for {
interpreter <- Interpreter[IO]
fib1 <- display(interpreter).start
fib2 <- read(interpreter).start
_ <- fib1.join
_ <- fib2.join
} yield ()
def program_invalid: IO[Unit] = for {
interpreter <- Interpreter[IO]
_ <- (read(interpreter), display(interpreter)).parSequence
} yield ()
第一个运行良好,这意味着两条光纤都在运行(显示和读取)。不幸的是,第二次实施的工作方式不同。看起来只有显示光纤会运行。为什么会这样?这里有什么区别?
【问题讨论】:
标签: scala functional-programming scala-cats