`sig val find : ('a -> bool) -> 'a list -> 'a option val rfind : ('a -> bool) -> 'a list -> 'a option val findi : (int -> 'a -> bool) -> 'a list -> (int * 'a) option val split_at : int -> 'a list -> [ `Invalid_argument of string | `Ok of 'a list * 'a list ] val at : 'a list -> int -> [ `Invalid_argument of string | `Ok of 'a ] val assoc : 'a -> ('a * 'b) list -> 'b option val assoc_inv : 'b -> ('a * 'b) list -> 'a option val assq : 'a -> ('a * 'b) list -> 'b option val find_map : ('a -> 'b option) -> 'a list -> 'b option val hd : 'a list -> 'a option val tl : 'a list -> 'a list option val last : 'a list -> 'a option end`