Module Ast.OptionMonad

val return : mark:'m Shared_ast.mark -> ( 'a Shared_ast.any, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.boxed_gexpr
val empty : mark:'m Shared_ast.mark -> ( 'a Shared_ast.any, 'm ) Shared_ast.boxed_gexpr
val bind_var : mark:'m Shared_ast.mark -> ( 'a Shared_ast.any, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.gexpr Shared_ast.Var.t -> ( 'a, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.boxed_gexpr
val bind : mark:'m Shared_ast.mark -> var_name:string -> ( 'a Shared_ast.any, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.boxed_gexpr
val bind_cont : mark:'m Shared_ast.mark -> var_name:string -> ( ( 'a Shared_ast.any, 'm ) Shared_ast.gexpr Shared_ast.Var.t -> ( 'a, 'm ) Shared_ast.boxed_gexpr ) -> ( 'a, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.boxed_gexpr
val mbind_mvar : mark:'m Shared_ast.mark -> ( 'a Shared_ast.any, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.gexpr Shared_ast.Var.t list -> ( 'a, 'm ) Shared_ast.boxed_gexpr list -> ( 'a, 'm ) Shared_ast.boxed_gexpr
val mbind : mark:'m Shared_ast.mark -> var_name:string -> ( 'a Shared_ast.any, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.boxed_gexpr list -> ( 'a, 'm ) Shared_ast.boxed_gexpr
val mbind_cont : mark:'m Shared_ast.mark -> var_name:string -> ( ( 'a Shared_ast.any, 'm ) Shared_ast.gexpr Shared_ast.Var.t list -> ( 'a, 'm ) Shared_ast.boxed_gexpr ) -> ( 'a, 'm ) Shared_ast.boxed_gexpr list -> ( 'a, 'm ) Shared_ast.boxed_gexpr
val error_on_empty : mark:'m Shared_ast.mark -> var_name:string -> ?toplevel:bool -> ( < exceptions : Shared_ast.yes.. > as 'a, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.boxed_gexpr
val map : mark:'m Shared_ast.mark -> var_name:string -> ( < exceptions : Shared_ast.no.. > as 'a, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.boxed_gexpr
val mmap_mvar : mark:'m Shared_ast.mark -> ( 'a Shared_ast.any, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.gexpr Shared_ast.Var.t list -> ( 'a, 'm ) Shared_ast.boxed_gexpr list -> ( 'a, 'm ) Shared_ast.boxed_gexpr
val mmap : mark:'m Shared_ast.mark -> var_name:string -> ( 'a Shared_ast.any, 'm ) Shared_ast.boxed_gexpr -> ( 'a, 'm ) Shared_ast.boxed_gexpr list -> ( 'a, 'm ) Shared_ast.boxed_gexpr