(* Some stubbed functions, assume they do something async: *);;
# let some_effect (x: int): int io = fun cb -&gt; cb (x * 2);;
val some_effect : int -&gt; int io = &lt;fun&gt;

# let some_other_effect (x: int): int io = fun cb -&gt; cb (x + 10);;
val some_other_effect : int -&gt; int io = &lt;fun&gt;

# let yet_another_effect (x: int): string io = fun cb -&gt; cb (string_of_int x);;
val yet_another_effect : int -&gt; string io = &lt;fun&gt;


# let empty = pure;;
val empty : 'a -&gt; 'a io = &lt;fun&gt;

# 