Module Purification

module Errors : sig ... end
module Compiler : sig ... end
module Decompiler : sig ... end
val compile_program : raise: ( [> `Purification_corner_case of string ] list, 'a ) Simple_utils.Trace.raise -> Compiler.I.program -> Compiler.O.program
val compile_expression : raise: ( [> `Purification_corner_case of string ], 'a ) Simple_utils.Trace.raise -> last:bool -> Ast_imperative.Types.expression -> Compiler.O.expression
val decompile_program : Decompiler.O.module_ -> Decompiler.I.module_