lean4-htt/tests/lean/run/task_test_io.lean
2020-09-14 17:57:33 +02:00

35 lines
788 B
Text

#eval do
t1 ← IO.asTask $ Nat.forM 10 fun _ => IO.println "hi";
t2 ← IO.asTask $ Nat.forM 10 fun _ => IO.println "ho";
IO.ofExcept t1.get
#eval do
t1 ← IO.mapTask IO.println (Task.spawn fun _ => "ha");
pure ()
#eval do
t1 ← IO.bindTask (Task.spawn fun _ => "hu") fun s =>
IO.asTask (IO.println s);
pure ()
#eval do
t1 ← IO.asTask do {
c ← IO.checkCanceled;
IO.println (if c then "canceled!" else "done!")
};
pure ()
#eval do
t1 ← IO.asTask do {
c ← IO.checkCanceled;
IO.println (if c then "canceled! 2" else "done! 2")
};
IO.cancel t1;
IO.wait t1;
pure ()
#eval IO.waitAny [
Task.spawn fun _ => dbgSleep 2 fun _ => "A",
Task.spawn fun _ => dbgSleep 3 fun _ => "B",
Task.spawn fun _ => dbgSleep 1 fun _ => "C"
]