Middle.StmtMIR types and modules corresponding to the statements of the language
module Pattern : sig ... endThe "two-level" type for statements in the MIR. This corresponds to what the AST calls Frontend.Ast.statement_with
val sexp_of_t :
('a -> Sexplib0.Sexp.t) ->
('b -> Sexplib0.Sexp.t) ->
('a, 'b) t ->
Sexplib0.Sexp.tval pp : ('a, 'b) t Fmt.tval rewrite_bottom_up :
f:('a Expr.t -> 'a Expr.t) ->
g:(('a, 'b) t -> ('a, 'b) t) ->
('a, 'b) t ->
('a, 'b) trewrite_bottom_up specializes fold so that the result type 'r1 is equal to the type of the nested fixed-point type i.e. 'r1 = 'a Expr.t and the result type 'r2 is equal to the top-level fixed-point type i.e. 'r2 = ('a,'b) t.
This also means that the function f can be written with our nested fixed-point type 'a Expr.t as its argument and g can be written with ('a,'b) t as its argument.
module Located : sig ... endmodule Numbered : sig ... endmodule Helpers : sig ... end