1
Which OCaml threads currently mostly can’t: only one running thread can access the heap. OCaml for MultiCore [3] is an unofficial project to remove this limitation.
2
This description is borrowed from the cited article.
3
The Haskell code could be s = 1:merge [ x*2 | x <- s ] (merge [ x*3 | x <- s ] [ x*5 | x <- s ]) with merge defined appropriately.
4
Our description applies to a statically typed language such as OCaml. In Scheme captured continuations are actually reified into functions, the continuation is thrown by applying the function.
5
This is the behavior of the operator know as control0 [13].
6
Actually, the unoptimized version has a subtle memory leak (see [14, Appendix B]).
7
This is borrowed from monad syntax but does not necessarily represent here “the” bind operator from monads, as we’ll see.
8
Haskell programmers will think of the $ operator.
9
But one could argue that all our implementations are!