list: operations on lists

value list_length : 'a list -> int
Return the length (number of elements) of the given list.
value prefix @ : 'a list -> 'a list -> 'a list
List concatenation.
value hd : 'a list -> 'a
Return the first element of the given list. Raise Failure "hd" if the list is empty.
value tl : 'a list -> 'a list
Return the given list without its first element. Raise Failure "tl" if the list is empty.
value rev : 'a list -> 'a list
List reversal.
value map : ('a -> 'b) -> 'a list -> 'b list
map f [a1; ...; an] applies function f to a1, ..., an, and builds the list [f a1; ...; f an] with the results returned by f.
value do_list : ('a -> unit) -> 'a list -> unit
do_list f [a1; ...; an] applies function f in turn to a1; ...; an, discarding all the results. It is equivalent to begin f a1; f a2; ...; f an; () end.
value it_list : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a
it_list f a [b1; ...; bn] is f (... (f (f a b1) b2) ...) bn.
value list_it : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
list_it f [a1; ...; an] b is f a1 (f a2 (... (f an b) ...)).
value map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
map2 f [a1; ...; an] [b1; ...; bn] is [f a1 b1; ...; f an bn]. Raise Invalid_argument "map2" if the two lists have different lengths.
value do_list2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit
do_list2 f [a1; ...; an] [b1; ...; bn] calls in turn f a1 b1; ...; f an bn, discarding the results. Raise Invalid_argument "do_list2" if the two lists have different lengths.
value it_list2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a
it_list2 f a [b1; ...; bn] [c1; ...; cn] is f (... (f (f a b1 c1) b2 c2) ...) bn cn. Raise Invalid_argument "it_list2" if the two lists have different lengths.
value list_it2 : ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c
list_it2 f [a1; ...; an] [b1; ...; bn] c is f a1 b1 (f a2 b2 (... (f an bn c) ...)). Raise Invalid_argument "list_it2" if the two lists have different lengths.
value flat_map : ('a -> 'b list) -> 'a list -> 'b list
flat_map f [l1; ...; ln] is (f l1) @ (f l2) @ ... @ (f ln).
value for_all : ('a -> bool) -> 'a list -> bool
for_all p [a1; ...; an] is (p a1) & (p a2) & ... & (p an).
value exists : ('a -> bool) -> 'a list -> bool
exists p [a1; ...; an] is (p a1) or (p a2) or ... or (p an).
value mem : 'a -> 'a list -> bool
mem a l is true if and only if a is structurally equal (see module eq) to an element of l.
value memq : 'a -> 'a list -> bool
memq a l is true if and only if a is physically equal (see module eq) to an element of l.
value except : 'a -> 'a list -> 'a list
except a l returns the list l where the first element structurally equal to a has been removed. The list l is returned unchanged if it does not contain a.
value exceptq : 'a -> 'a list -> 'a list
Same as except, with physical equality instead of structural equality.
value subtract : 'a list -> 'a list -> 'a list
subtract l1 l2 returns the list l1 where all elements structurally equal to one of the elements of l2 have been removed.
value union : 'a list -> 'a list -> 'a list
union l1 l2 appends before list l2 all the elements of list l1 that are not structurally equal to an element of l2.
value intersect : 'a list -> 'a list -> 'a list
intersect l1 l2 returns the list of the elements of l1 that are structurally equal to an element of l2.
value index : 'a -> 'a list -> int
index a l returns the position of the first element of list l that is structurally equal to a. The head of the list has position 0. Raise Not_found if a is not present in l.
value assoc : 'a -> ('a * 'b) list -> 'b
assoc a l returns the value associated with key a in the list of pairs l. That is, assoc a [ ...; (a,b); ...] = b if (a,b) is the leftmost binding of a in list l. Raise Not_found if there is no value associated with a in the list l.
value assq :  'a -> ('a * 'b) list -> 'b
Same as assoc, but use physical equality instead of structural equality to compare keys.
value mem_assoc : 'a -> ('a * 'b) list -> bool
Same as assoc, but simply return true if a binding exists, and false if no bindings exist for the given key.