sig
type ('a, 'b) t
val empty : ('a, 'b) Extfun.t
val apply : ('a, 'b) Extfun.t -> 'a -> 'b
exception Failure
val print : ('a, 'b) Extfun.t -> unit
type ('a, 'b) matching = {
patt : Extfun.patt;
has_when : bool;
expr : ('a, 'b) Extfun.expr;
}
and patt =
Eapp of Extfun.patt list
| Eacc of Extfun.patt list
| Econ of string
| Estr of string
| Eint of string
| Etup of Extfun.patt list
| Evar of unit
and ('a, 'b) expr = 'a -> 'b option
val extend :
('a, 'b) Extfun.t ->
(Extfun.patt * bool * ('a, 'b) Extfun.expr) list -> ('a, 'b) Extfun.t
end