# Module Misc.Stdlib.List

    module List: sig .. end

    type 'a t = 'a list

    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int

The lexicographic order supported by the provided order. There is no constraint on the relative lengths of the lists.

    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool

Returns `true` iff the given lists have the same length and content with respect to the given equality function.

    val filter_map : ('a -> 'b option) -> 'a t -> 'b t

`filter_map f l` applies `f` to every element of `l`, filters out the `None` elements and returns the list of the arguments of the `Some` elements.

    val some_if_all_elements_are_some : 'a option t -> 'a t option

If all elements of the given list are `Some _` then `Some xs` is returned with the `xs` being the contents of those `Some`s, with order preserved. Otherwise return `None`.

    val map2_prefix : ('a -> 'b -> 'c) ->
           'a t ->
           'b t -> 'c t * 'b t

`let r1, r2 = map2_prefix f l1 l2` If `l1` is of length n and `l2 = h2 @ t2` with h2 of length n, r1 is `List.map2 f l1 h1` and r2 is t2.

    val split_at : int -> 'a t -> 'a t * 'a t

`split_at n l` returns the pair `before, after` where `before` is the `n` first elements of `l` and `after` the remaining ones. If `l` has less than `n` elements, raises Invalid_argument.