File tree Expand file tree Collapse file tree 2 files changed +43
-0
lines changed
Expand file tree Collapse file tree 2 files changed +43
-0
lines changed Original file line number Diff line number Diff line change 1+ module [
2+ Async ,
3+ after_ticks,
4+ from_task!,
5+ map!,
6+ poll!,
7+ ]
8+
9+ Async a err : [Pending { remaining : U64 , step! : {} => Result a err }, Ready a]
10+
11+ poll ! : Async a err => Result (Async a err) err
12+ poll ! = |async|
13+ when async is
14+ Ready (val) -> Ok (Ready (val))
15+ Pending ({ remaining, step! }) ->
16+ if remaining == 0 then
17+ when step!({}) is
18+ Ok (val) -> Ok (Ready (val))
19+ Err (err) -> Err (err)
20+ else
21+ Ok (Pending ({ remaining: remaining - 1 , step! }))
22+
23+ from_task ! : ({} => Result a err) => Async a err
24+ from_task ! = |task!|
25+ Pending ({ remaining: 0 , step!: task! })
26+
27+ map ! : (a -> b), Async a err => Async b err
28+ map ! = |f, async|
29+ when async is
30+ Ready (val) -> Ready (f(val))
31+ Pending ({ remaining, step! }) ->
32+ Pending ({
33+ remaining,
34+ step!: |{}|
35+ when step!({}) is
36+ Ok (val) -> Ok (f(val))
37+ Err (err) -> Err (err),
38+ })
39+
40+ after_ticks : U64 -> Async {} []
41+ after_ticks = |ticks|
42+ Pending ({ remaining: ticks, step!: |{}| Ok ({}) })
Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ platform "cli"
2121 Random ,
2222 Gmp ,
2323 Math ,
24+ Async ,
2425 ]
2526 packages {}
2627 imports []
You can’t perform that action at this time.
0 commit comments