34 lines
848 B
Text
34 lines
848 B
Text
import Std.Internal.Async.Timer
|
||
|
||
open Std Internal IO Async
|
||
|
||
def test1 : IO (AsyncTask Nat) := do
|
||
let s1 ← Sleep.mk 1000
|
||
let s2 ← Sleep.mk 1500
|
||
Selectable.one #[
|
||
.case (← s2.selector) fun _ => return AsyncTask.pure 2,
|
||
.case (← s1.selector) fun _ => return AsyncTask.pure 1,
|
||
]
|
||
|
||
/-- info: 1 -/
|
||
#guard_msgs in
|
||
#eval show IO _ from do
|
||
let task ← test1
|
||
IO.ofExcept task.get
|
||
|
||
def test2 : IO (AsyncTask Nat) := do
|
||
Selectable.one #[
|
||
.case (← Selector.sleep 1500) fun _ => return AsyncTask.pure 2,
|
||
.case (← Selector.sleep 1000) fun _ => return AsyncTask.pure 1,
|
||
]
|
||
|
||
/-- info: 1 -/
|
||
#guard_msgs in
|
||
#eval show IO _ from do
|
||
let task ← test2
|
||
IO.ofExcept task.get
|
||
|
||
/-- error: Selectable.one requires at least one Selectable -/
|
||
#guard_msgs in
|
||
#eval show IO _ from do
|
||
let foo ← Selectable.one (α := Unit) #[]
|