Module Mardukml_lib.Ast

Copyright 2026, Kirill K. Smirnov

SPDX-License-Identifier: LGPL-3.0-or-later

type qf_mltype =
  1. | Basetype of string
  2. | Arrowtype of qf_mltype * qf_mltype
  3. | Vartype of int
  4. | Prod of qf_mltype * qf_mltype
  5. | Sum of qf_mltype * qf_mltype
val equal_qf_mltype : qf_mltype -> qf_mltype -> Ppx_deriving_runtime.bool
val qf_mltype_gen : qf_mltype QCheck.Gen.t
type mltype = qf_mltype * int list
val qf_mltype_to_string : qf_mltype -> string
val mltype_to_string : mltype -> string
val reserved : string list
val ident_gen : string QCheck.Gen.t
val constr_gen : string QCheck.Gen.t
type identifier = string
val equal_identifier : identifier -> identifier -> Ppx_deriving_runtime.bool
val gen_identifier : string QCheck.Gen.t
val arb_identifier : string QCheck.arbitrary
type constructor = string
val equal_constructor : constructor -> constructor -> Ppx_deriving_runtime.bool
val gen_constructor : string QCheck.Gen.t
val arb_constructor : string QCheck.arbitrary
type integer = int
val equal_integer : integer -> integer -> Ppx_deriving_runtime.bool
val gen_integer : int QCheck.Gen.t
val arb_integer : int QCheck.arbitrary
type mlterm =
  1. | Var of identifier
  2. | Constr of constructor
  3. | Int of integer
  4. | Bool of bool
  5. | Unit
  6. | ITE of mlterm * mlterm * mlterm
  7. | Let of identifier * mlterm * mlterm
  8. | LetRec of identifier * mlterm * mlterm
  9. | LetExc of constructor * qf_mltype * mlterm
  10. | App of mlterm * mlterm
  11. | Fun of identifier * mlterm
  12. | Pair of mlterm * mlterm
  13. | Match of mlterm * identifier * mlterm * identifier * mlterm
  14. | Try of mlterm * (constructor * identifier * mlterm) list
val equal_mlterm : mlterm -> mlterm -> Ppx_deriving_runtime.bool
val gen_mlterm_sized : int -> mlterm QCheck.Gen.t
val gen_mlterm : mlterm QCheck.Gen.t
val arb_mlterm_sized : int -> mlterm QCheck.arbitrary
val arb_mlterm : mlterm QCheck.arbitrary
val mlterm_to_string : mlterm -> string