Module Kot.NonCatenableDeque

type 'a deque
val empty : 'a deque
val length : 'a deque -> int
val is_empty : 'a deque -> bool
val push : 'a -> 'a deque -> 'a deque
val pop : 'a deque -> 'a * 'a deque
val inject : 'a deque -> 'a -> 'a deque
val eject : 'a deque -> 'a deque * 'a
val pop_opt : 'a deque -> ('a * 'a deque) option
val eject_opt : 'a deque -> ('a deque * 'a) option
val check : 'a deque -> unit
val map : ('a -> 'b) -> 'a deque -> 'b deque
val fold_left : ('b -> 'a -> 'b) -> 'b -> 'a deque -> 'b