type 'a tree = {node : 'a;children : 'a forest;
}and 'a forest = 'a tree listmodule type S = sig ... endinclude S with type 'a t = 'a tree
val fold_left : f:('acc -> 'a -> 'acc) -> 'acc -> 'a t -> 'accval iter : f:('a -> unit) -> 'a t -> unitval map : f:('a -> 'b) -> 'a t -> 'b t