模組 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_ofn <= 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

返回最長的列表,該列表(根據提供的相等函數)是兩個給定列表的前綴。也會返回移除此最長共同前綴後的輸入列表。