(* ||M|| This file is part of HELM, an Hypertextual, Electronic ||A|| Library of Mathematics, developed at the Computer Science ||T|| Department, University of Bologna, Italy. ||I|| ||T|| HELM is free software; you can redistribute it and/or ||A|| modify it under the terms of the GNU General Public License \ / version 2 or (at your option) any later version. \ / This software is distributed as is, NO WARRANTY. V_______________________________________________________________ *) (* $Id: nCic.ml 9058 2008-10-13 17:42:30Z tassi $ *) val repeat : ('a -> 'a option) -> 'a -> 'a module type Elem = sig type t val pp : t -> string end ;; module type ZipTree = sig type t type tree = Node of (t * tree) list type position val start : tree -> position val up : position -> position option val down : position -> position option val left : position -> position option val right : position -> position option val root: position -> tree val previsit: ('a -> t -> 'a) -> 'a -> position -> 'a val get: position -> t val set: t -> position -> position val inject: tree -> position -> position val eject: position -> tree end module Make(T : Elem) : ZipTree with type t = T.t