Support.List1val from : 'a -> 'a list -> 'a tfrom h t is the non-empty list obtained by prepending h onto the list t.
val singleton : 'a -> 'a tsingleton e is the non-empty list with the single element e in it.
replace_first f (a1, [a2; a3; ...; an]) is (f a1, [a2; a3; ...; an]).
val uncons : 'a t -> 'a * 'a listuncons l is (head l, tail l).
val head : 'a t -> 'ahead l is the first element in l.
val tail : 'a t -> 'a listtail l is the list of elements that succeed the head of l.
val unsnoc : 'a t -> 'a list * 'aunsnoc (a_1, [a_2; ...; a_(n-1); a_n]) is ([a_1; a_2; ...; a_(n-1)], a_n), with a_n being the last element in the non-empty list, and [a_1; a_2; ...; a_(n-1)] being the list of elements that precede a_n in order.
val last : 'a t -> 'alast l is the last element in l.
val length : 'a t -> intlength l the number of elements in l.
compare l1 l2 is equivalent to compare (length l1) (length l2), except that the computation stops after reaching the end of the shortest list.
val compare_length_with : 'a t -> int -> intcompare_length_with l n is equivalent to compare (length l) n, except that the computation stops after at most n iterations on l.
equal eq (a1, [a2; ...; an]) (b1, [b2; ...; bm]) holds when the two input lists have the same length, and for each pair of elements ai, bi at the same position we have eq ai bi.
Note: the eq function may be called even if the lists have different lengths. If you know your equality function is costly, you may want to check List1.compare_lengths first.
compare cmp (a1, [a2; ...; an]) (b1, [b2; ...; bm]) performs a lexicographic comparison of the two input lists, using the same 'a -> 'a -> int interface as Stdlib.compare:
cons a1 l1 is smaller than cons a2 l2 (negative result) if a1 is smaller than a2, or if they are equal (0 result) and l1 is smaller than l2singleton a is smaller than singleton b if a is smaller than bNote: the cmp function will be called even if the lists have different lengths.
val iter : ('a -> unit) -> 'a t -> unititer f (a1, [a2; ...; an]) applies function f in turn to [a1; ...; an]. It is equivalent to begin f a1; f a2; ...; f an; () end.
Same as List.map, but the function is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.
index (x0, [x1; x2; ...; xn]) is ((0, x0), [(1, x1); (2, x2); ...; (n, xn)]).
val fold_right : ('a -> 'b) -> ('a -> 'b -> 'b) -> 'a t -> 'bfold_right sing cons (a1, [a2; ...; an]) is cons a1 (cons a2 (... (sing an) ...)).
val fold_left : ('a -> 'b) -> ('b -> 'a -> 'b) -> 'a t -> 'bfold_left sing cons (a1, [a2; ...; an]) is cons (... (cons (sing a1) a2) ....) an.
val filter_map : ('a -> 'b option) -> 'a t -> 'b listfilter_map f l applies f to every element of l, filters out the Option.None elements and returns the list of the arguments of the Option.Some elements.
val all_equal : 'a t -> 'a optionCollapses a non-empty sequence to a single element, provided all elements are (structurally) equal.
Maps a function that may fail over a non-empty list, and eagerly fails as soon as any individual call fails. Note that elements beyond the first failing one will not be processed.
map2 f (a1, [a2; ...; an]) (b1, [b2; ...; bn]) is (f a1 b1, [f a2 b2; ...; f an bn]).
val for_all : ('a -> bool) -> 'a t -> boolfor_all p (a1, [a2; ...; an]) checks if all elements of the non-empty list satisfy the predicate p. That is, it returns (p a1) && (p a2) && ... && (p an).
val exists : ('a -> bool) -> 'a t -> boolexists p (a1, [a2; ...; an]) checks if any element of the non-empty list satisfies the predicate p. That is, it returns (p a1) || (p a2) || ... || (p an).
val find_opt : ('a -> bool) -> 'a t -> 'a optionfind_opt p l is the first element in l satisfying the predicate p. Returns Option.None if there is no such element.
val find_map : ('a -> 'b option) -> 'a t -> 'b optionfind_map f l applies f to the elements of l in order, and returns the first result of the form Option.Some v, or Option.None if none exist.
val minimum_by : ('a -> 'a -> bool) -> 'a t -> 'aFinds the leftmost minimal element of the sequence according to the given decision procedure for the strict less-than relation on 'a.
val maximum_by : ('a -> 'a -> bool) -> 'a t -> 'aFinds the leftmost maximal element of the sequence according to the given decision procedure for the strict greater-than relation on 'a.
val minimum : 'a t -> 'aFinds the leftmost minimal element of the sequence according to the default ordering for the type 'a.
val maximum : 'a t -> 'aFinds the leftmost maximal element of the sequence according to the default ordering for the type 'a.
val partition : ('a -> bool) -> 'a t -> 'a list * 'a listpartition f l returns a pair of lists (l1, l2), where l1 is the list of all the elements of l that satisfy the predicate f, and l2 is the list of all the elements of l that do not satisfy f. The order of elements in the input list is preserved. At least one of l1 and l2 is non-empty.
val partition_map :
('a -> ('l, 'r) Stdlib.Either.t) ->
'a t ->
('l t * 'r list, 'l list * 'r t) Stdlib.Either.tpartition_map f l returns a pair of lists (l1, l2) such that, for each element x of the input list l:
f x is Left y1, then y1 is in l1, andf x is Right y2, then y2 is in l2.In order to preserve the guarantee that the output lists l1 and l2 combined have at least one element, an Stdlib.Either.t is returned.
val group_by : ('a -> 'key) -> 'a list -> ('key * 'a t) listGroups elements of a list according to a key computed from the element. The input list need not be sorted. (The algorithm inserts every element of the list into a hashtable in order to construct the grouping.) Each group is guaranteed to be non-empty.
Transform a non-empty list of pairs into a pair of non-empty lists: split ((a1, b1), [(a2, b2); ...; (an, bn)]) is (a1, [a2; ...; an]), (b1, [b2; ...; bn]).
Transform a pair of lists into a list of pairs: combine (a1, [a2; ...; an]) (b1, [b2; ...; bn]) is ((a1, b1), [(a2, b2); ...; (an, bn)]).
ap (x1, [x2; ...; xn]) (f1, [f2; ...; fn]) is (f1 x1, [f2 x2; ...; fn xn]).
val pp :
?pp_sep:(Format.formatter -> unit -> unit) ->
(Format.formatter -> 'a -> unit) ->
Format.formatter ->
'a t ->
unitpp ?pp_sep pp_v ppf l prints the items of the non-empty list l using pp_v to print each item and calling pp_sep between items on the formatter ppf.
val show :
?pp_sep:(Format.formatter -> unit -> unit) ->
(Format.formatter -> 'a -> unit) ->
'a t ->
stringshow ?pp_sep pp_v l shows as a string the items of the non-empty list l using pp_v to show each item and calling pp_sep between items.
val of_list : 'a list -> 'a t optionConverts a list to a non-empty list.
val unsafe_of_list : 'a list -> 'a tConverts the list to a nonempty list. Raises the exception Empty if the list was empty.
val to_list : 'a t -> 'a listConverts a non-empty list to a list.