lean4-htt/tests/lean/run/async_select_timer.lean
Sofia Rodrigues 4881c3042e
refactor: replace Task with Async and minor changes to some basic Async functions (#10366)
This PR refactors the Async module to use the `Async` type in all of the
`Async` files.
2025-09-20 16:23:06 +00:00

31 lines
725 B
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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