模块 Misc.Stdlib.List

module List: sig .. end

List 模块的扩展


type 'a t = 'a list 
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int

由提供的顺序支持的字典序。对列表的相对长度没有约束。

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

当且仅当给定列表在给定相等函数方面具有相同的长度和内容时,返回true

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

如果给定列表的所有元素都是Some _,则返回Some xs,其中xs是这些Some的内容,并保持顺序。否则返回None

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

let r1, r2 = map2_prefix f l1 l2 如果l1的长度为 n 且l2 = h2 @ t2,其中 h2 的长度为 n,则 r1 为List.map2 f l1 h1,r2 为 t2。

val iteri2 : (int -> 'a -> 'b -> unit) -> 'a list -> 'b list -> unit

List.iter2相同,但函数将元素的索引作为第一个参数(从 0 开始计数)。

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

split_at n l 返回对before, after,其中beforel的前n个元素,after是其余元素。如果l的元素少于n个,则引发 Invalid_argument。

val chunks_of : int -> 'a t -> 'a t t

chunks_of n t 返回一个非空列表列表,其连接等于原始列表。每个列表都有n个元素,除了最后一个列表可能具有较少的元素。chunks_of如果n <= 0则引发异常。

val is_prefix : equal:('a -> 'a -> bool) -> 'a list -> of_:'a list -> bool

当且仅当给定列表(相对于列表成员上的给定相等函数)是列表of_的前缀时,返回true

type 'a longest_common_prefix_result = private {
   longest_common_prefix : 'a list;
   first_without_longest_common_prefix : 'a list;
   second_without_longest_common_prefix : 'a list;
}
val find_and_chop_longest_common_prefix : equal:('a -> 'a -> bool) ->
first:'a list ->
second:'a list -> 'a longest_common_prefix_result

返回最长的列表,该列表相对于提供的相等函数,是两个给定列表的前缀。还返回每个输入列表(删除此类最长公共前缀)。