Protocol environment / List: update to 4.06.1
This commit is contained in:
parent
ae30b52bd6
commit
1a67c2865d
@ -29,6 +29,20 @@
|
|||||||
val length : 'a list -> int
|
val length : 'a list -> int
|
||||||
(** Return the length (number of elements) of the given list. *)
|
(** Return the length (number of elements) of the given list. *)
|
||||||
|
|
||||||
|
val compare_lengths : 'a list -> 'b list -> int
|
||||||
|
(** Compare the lengths of two lists. [compare_lengths l1 l2] is
|
||||||
|
equivalent to [compare (length l1) (length l2)], except that
|
||||||
|
the computation stops after itering on the shortest list.
|
||||||
|
@since 4.05.0
|
||||||
|
*)
|
||||||
|
|
||||||
|
val compare_length_with : 'a list -> int -> int
|
||||||
|
(** Compare the length of a list to an integer. [compare_length_with l n] is
|
||||||
|
equivalent to [compare (length l) n], except that
|
||||||
|
the computation stops after at most [n] iterations on the list.
|
||||||
|
@since 4.05.0
|
||||||
|
*)
|
||||||
|
|
||||||
val cons : 'a -> 'a list -> 'a list
|
val cons : 'a -> 'a list -> 'a list
|
||||||
(** [cons x xs] is [x :: xs]
|
(** [cons x xs] is [x :: xs]
|
||||||
@since 4.03.0
|
@since 4.03.0
|
||||||
@ -48,9 +62,24 @@ val nth : 'a list -> int -> 'a
|
|||||||
Raise [Failure "nth"] if the list is too short.
|
Raise [Failure "nth"] if the list is too short.
|
||||||
Raise [Invalid_argument "List.nth"] if [n] is negative. *)
|
Raise [Invalid_argument "List.nth"] if [n] is negative. *)
|
||||||
|
|
||||||
|
val nth_opt : 'a list -> int -> 'a option
|
||||||
|
(** Return the [n]-th element of the given list.
|
||||||
|
The first element (head of the list) is at position 0.
|
||||||
|
Return [None] if the list is too short.
|
||||||
|
Raise [Invalid_argument "List.nth"] if [n] is negative.
|
||||||
|
@since 4.05
|
||||||
|
*)
|
||||||
|
|
||||||
val rev : 'a list -> 'a list
|
val rev : 'a list -> 'a list
|
||||||
(** List reversal. *)
|
(** List reversal. *)
|
||||||
|
|
||||||
|
val init : int -> (int -> 'a) -> 'a list
|
||||||
|
(** [List.init len f] is [f 0; f 1; ...; f (len-1)], evaluated left to right.
|
||||||
|
|
||||||
|
@raise Invalid_argument if len < 0.
|
||||||
|
@since 4.06.0
|
||||||
|
*)
|
||||||
|
|
||||||
val append : 'a list -> 'a list -> 'a list
|
val append : 'a list -> 'a list -> 'a list
|
||||||
(** Concatenate two lists. Same as the infix operator [@].
|
(** Concatenate two lists. Same as the infix operator [@].
|
||||||
Not tail-recursive (length of the first argument). *)
|
Not tail-recursive (length of the first argument). *)
|
||||||
@ -70,7 +99,7 @@ val flatten : 'a list list -> 'a list
|
|||||||
(** An alias for [concat]. *)
|
(** An alias for [concat]. *)
|
||||||
|
|
||||||
|
|
||||||
(** {6 Iterators} *)
|
(** {1 Iterators} *)
|
||||||
|
|
||||||
|
|
||||||
val iter : ('a -> unit) -> 'a list -> unit
|
val iter : ('a -> unit) -> 'a list -> unit
|
||||||
@ -111,7 +140,7 @@ val fold_right : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
|
|||||||
[f a1 (f a2 (... (f an b) ...))]. Not tail-recursive. *)
|
[f a1 (f a2 (... (f an b) ...))]. Not tail-recursive. *)
|
||||||
|
|
||||||
|
|
||||||
(** {6 Iterators on two lists} *)
|
(** {1 Iterators on two lists} *)
|
||||||
|
|
||||||
|
|
||||||
val iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit
|
val iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit
|
||||||
@ -144,7 +173,7 @@ val fold_right2 : ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c
|
|||||||
to have different lengths. Not tail-recursive. *)
|
to have different lengths. Not tail-recursive. *)
|
||||||
|
|
||||||
|
|
||||||
(** {6 List scanning} *)
|
(** {1 List scanning} *)
|
||||||
|
|
||||||
|
|
||||||
val for_all : ('a -> bool) -> 'a list -> bool
|
val for_all : ('a -> bool) -> 'a list -> bool
|
||||||
@ -176,7 +205,7 @@ val memq : 'a -> 'a list -> bool
|
|||||||
equality to compare list elements. *)
|
equality to compare list elements. *)
|
||||||
|
|
||||||
|
|
||||||
(** {6 List searching} *)
|
(** {1 List searching} *)
|
||||||
|
|
||||||
|
|
||||||
val find : ('a -> bool) -> 'a list -> 'a
|
val find : ('a -> bool) -> 'a list -> 'a
|
||||||
@ -185,6 +214,12 @@ val find : ('a -> bool) -> 'a list -> 'a
|
|||||||
Raise [Not_found] if there is no value that satisfies [p] in the
|
Raise [Not_found] if there is no value that satisfies [p] in the
|
||||||
list [l]. *)
|
list [l]. *)
|
||||||
|
|
||||||
|
val find_opt: ('a -> bool) -> 'a list -> 'a option
|
||||||
|
(** [find_opt p l] returns the first element of the list [l] that
|
||||||
|
satisfies the predicate [p], or [None] if there is no value that
|
||||||
|
satisfies [p] in the list [l].
|
||||||
|
@since 4.05 *)
|
||||||
|
|
||||||
val filter : ('a -> bool) -> 'a list -> 'a list
|
val filter : ('a -> bool) -> 'a list -> 'a list
|
||||||
(** [filter p l] returns all the elements of the list [l]
|
(** [filter p l] returns all the elements of the list [l]
|
||||||
that satisfy the predicate [p]. The order of the elements
|
that satisfy the predicate [p]. The order of the elements
|
||||||
@ -201,7 +236,7 @@ val partition : ('a -> bool) -> 'a list -> 'a list * 'a list
|
|||||||
The order of the elements in the input list is preserved. *)
|
The order of the elements in the input list is preserved. *)
|
||||||
|
|
||||||
|
|
||||||
(** {6 Association lists} *)
|
(** {1 Association lists} *)
|
||||||
|
|
||||||
|
|
||||||
val assoc : 'a -> ('a * 'b) list -> 'b
|
val assoc : 'a -> ('a * 'b) list -> 'b
|
||||||
@ -212,10 +247,24 @@ val assoc : 'a -> ('a * 'b) list -> 'b
|
|||||||
Raise [Not_found] if there is no value associated with [a] in the
|
Raise [Not_found] if there is no value associated with [a] in the
|
||||||
list [l]. *)
|
list [l]. *)
|
||||||
|
|
||||||
|
val assoc_opt: 'a -> ('a * 'b) list -> 'b option
|
||||||
|
(** [assoc_opt a l] returns the value associated with key [a] in the list of
|
||||||
|
pairs [l]. That is,
|
||||||
|
[assoc_opt a [ ...; (a,b); ...] = b]
|
||||||
|
if [(a,b)] is the leftmost binding of [a] in list [l].
|
||||||
|
Returns [None] if there is no value associated with [a] in the
|
||||||
|
list [l].
|
||||||
|
@since 4.05 *)
|
||||||
|
|
||||||
val assq : 'a -> ('a * 'b) list -> 'b
|
val assq : 'a -> ('a * 'b) list -> 'b
|
||||||
(** Same as {!List.assoc}, but uses physical equality instead of structural
|
(** Same as {!List.assoc}, but uses physical equality instead of structural
|
||||||
equality to compare keys. *)
|
equality to compare keys. *)
|
||||||
|
|
||||||
|
val assq_opt : 'a -> ('a * 'b) list -> 'b option
|
||||||
|
(** Same as {!List.assoc_opt}, but uses physical equality instead of structural
|
||||||
|
equality to compare keys.
|
||||||
|
@since 4.05 *)
|
||||||
|
|
||||||
val mem_assoc : 'a -> ('a * 'b) list -> bool
|
val mem_assoc : 'a -> ('a * 'b) list -> bool
|
||||||
(** Same as {!List.assoc}, but simply return true if a binding exists,
|
(** Same as {!List.assoc}, but simply return true if a binding exists,
|
||||||
and false if no bindings exist for the given key. *)
|
and false if no bindings exist for the given key. *)
|
||||||
@ -234,7 +283,7 @@ val remove_assq : 'a -> ('a * 'b) list -> ('a * 'b) list
|
|||||||
of structural equality to compare keys. Not tail-recursive. *)
|
of structural equality to compare keys. Not tail-recursive. *)
|
||||||
|
|
||||||
|
|
||||||
(** {6 Lists of pairs} *)
|
(** {1 Lists of pairs} *)
|
||||||
|
|
||||||
|
|
||||||
val split : ('a * 'b) list -> 'a list * 'b list
|
val split : ('a * 'b) list -> 'a list * 'b list
|
||||||
@ -251,7 +300,7 @@ val combine : 'a list -> 'b list -> ('a * 'b) list
|
|||||||
have different lengths. Not tail-recursive. *)
|
have different lengths. Not tail-recursive. *)
|
||||||
|
|
||||||
|
|
||||||
(** {6 Sorting} *)
|
(** {1 Sorting} *)
|
||||||
|
|
||||||
|
|
||||||
val sort : ('a -> 'a -> int) -> 'a list -> 'a list
|
val sort : ('a -> 'a -> int) -> 'a list -> 'a list
|
||||||
@ -291,7 +340,7 @@ val merge : ('a -> 'a -> int) -> 'a list -> 'a list -> 'a list
|
|||||||
(** Merge two lists:
|
(** Merge two lists:
|
||||||
Assuming that [l1] and [l2] are sorted according to the
|
Assuming that [l1] and [l2] are sorted according to the
|
||||||
comparison function [cmp], [merge cmp l1 l2] will return a
|
comparison function [cmp], [merge cmp l1 l2] will return a
|
||||||
sorted list containting all the elements of [l1] and [l2].
|
sorted list containing all the elements of [l1] and [l2].
|
||||||
If several elements compare equal, the elements of [l1] will be
|
If several elements compare equal, the elements of [l1] will be
|
||||||
before the elements of [l2].
|
before the elements of [l2].
|
||||||
Not tail-recursive (sum of the lengths of the arguments).
|
Not tail-recursive (sum of the lengths of the arguments).
|
||||||
|
Loading…
Reference in New Issue
Block a user