Module Kot.LinkedBuffer

type 'a buffer
val empty : 'a buffer
val length : 'a buffer -> int
val is_empty : 'a buffer -> bool
val push : 'a -> 'a buffer -> 'a buffer
val pop : 'a buffer -> 'a * 'a buffer
val first : 'a buffer -> 'a

first b returns the first element of the buffer b, which must be nonempty. It is equivalent to fst (pop b).

val inject : 'a buffer -> 'a -> 'a buffer
val eject : 'a buffer -> 'a buffer * 'a
val last : 'a buffer -> 'a

last b returns the last element of the buffer b, which must be nonempty. It is equivalent to snd (eject b).

val map : ('a -> 'b) -> 'a buffer -> 'b buffer
val fold_left : ('b -> 'a -> 'b) -> 'b -> 'a buffer -> 'b
val fold_right : ('a -> 'b -> 'b) -> 'a buffer -> 'b -> 'b