sig
type node
type t
+ type iterator
val create : unit -> t
- val add : node -> t -> t
+ val add : node -> t -> unit
+ val push_front : node -> t -> unit
+ val push_back : node -> t -> unit
+ val pop : t -> node
+ val append : t -> t -> t
val iter : (node -> unit) -> t -> unit
val length : t -> int
+ val is_empty : t -> bool
+ val head : t -> iterator
+ val last : t -> iterator
+ val next : iterator -> iterator
+ val value : iterator -> node
+ val finished : iterator -> bool
+ val copy : t -> t
end