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