1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
open Fmlib_js
type 'm t =
| None
| Task of ('m, Task.empty) Task.t
| Batch of 'm t list
let none: 'm t =
None
let batch (lst: 'm t list): 'm t =
Batch lst
let perform (task: ('a, Task.empty) Task.t): 'm t =
Task task
let attempt (f: ('a, 'e) result -> 'm) (task: ('a, 'e) Task.t): 'm t =
Task (Task.make_succeed f task)
let execute (post: Base.Value.t -> unit) (dispatch: 'm -> unit) (cmd: 'm t): unit =
let rec exe = function
| None ->
()
| Task task ->
Task.run task post dispatch
| Batch lst ->
List.iter exe lst
in
exe cmd