Parameter Make.1-T

type 'a t

parametric datatype. 'a is morally the recursive argument

val map : ('a -> 'b) -> 'a t -> 'b t

non-recursive mapping of subterms

val map2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t
val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

non-recursive folding of subterms

val fold2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b t -> 'c t -> 'a
val compare : unit t -> unit t -> int

comparison of constructors

val terminal : 'a t -> bool

for each constructor, is it not-parametric on 'a?

val choose : ('a -> 'b) -> 'a t -> 'b

choose f w applies f on ONE of the subterms of w