Libctrl (pronounced /lɪb/ /kənˈtrəʊl/) is programming library which codifies a wide range of control phenomena on top of OCaml's native effect handlers.
Currently, this library offers implementations of the following control operators:
- McCarthy's
amb
. - Scheme's
call/cc
(aka. Reynolds'escape
). - Filinski's monadic reflection for any monad.
- Kiselyov's interface for programming with typed multi-prompt continuations.
- Danvy and Filinski's
shift
andreset
(and some of their variations). - Felleisen's
control
andprompt
. - Felleisen'c
C
operator.
This work is largely based on Appendix A of my PhD thesis.