type 'a prelist (* mutable type of a list under construction *) val start : unit -> 'a prelist val extract : 'a prelist -> 'a list val cons : 'a -> 'a prelist -> unit