type 'a t
val create : int -> 'a -> 'a tval init : int -> (unit -> 'a) -> 'a tval copy : 'a t -> ('a -> 'a) -> 'a tval insert : 'a t -> int -> 'a -> unitval remove : 'a t -> int -> unitval get : 'a t -> int -> 'aval add : 'a t -> 'a -> unitval steal : 'a t -> (unit -> 'a) -> 'aval length : 'a t -> intval iter : 'a t -> f:('a -> unit) -> unitval clear : ?free:bool -> 'a t -> unitval first : 'a t -> 'aval last : 'a t -> 'aval last_opt : 'a t -> 'a optionval pop_back : 'a t -> unitval append_steal : dst:'a t -> src:'a t -> (unit -> 'a) -> unitval unsafe_array : 'a t -> 'a arrayval empty : 'a t -> bool