sig
val init : int -> (int -> 'a) -> 'a list
val return : ('a -> 'b option) -> 'a list -> 'b
val return_opt : ('a -> 'b option) -> 'a list -> 'b option
val map_opt : ('a -> 'b option) -> 'a list -> 'b list
val assoc_err : 'a -> ('a * 'b) list -> err:string -> 'b
val assoc_def : 'a -> ('a * 'b) list -> def:'b -> 'b
val assoc_replace : 'a -> 'b -> ('a * 'b) list -> ('a * 'b) list
val take : int -> 'a list -> 'a list
val drop : int -> 'a list -> 'a list
val uniq : 'a list -> 'a list
val index : 'a -> 'a list -> int list
val starts_with : 'a list -> 'a list -> bool
end