Lcalc
module Ast : sig ... end
Abstract syntax tree for the lambda calculus
module Closure_conversion : sig ... end
This module performs environment-passing style closure conversion, relying on the existential TClosureEnv
type and tuples for closure environments. The implementation is based on François Pottier's MPRI lesson. After closure conversion, closure hoisting is perform and all closures end up as toplevel definitions.
module Expand_op : sig ... end
This transformation expands the equality operator, that is polymorphic and needs code generation on the backends that don't natively support it ; note that this is a place-holder, generating inline expansions, and is planned to be replaced with a more serious implementation that generates specific functions. In particular, currently, comparison of enums is quadratic in size.
module From_dcalc : sig ... end
Translation from the default calculus to the lambda calculus. This translation uses an option monad to handle empty defaults terms. This transformation is one piece to permit to compile toward legacy languages that does not contains exceptions.
module Monomorphize : sig ... end
module To_ocaml : sig ... end