📅  最后修改于: 2023-12-03 14:45:05.469000             🧑  作者: Mango
SML 中有一个名为 partition
的函数,可以将一个列表中的元素根据一个给定的谓词分为两组。
partition: ('a -> bool) -> 'a list -> ('a list * 'a list)
其中,第一个参数是一个将列表元素映射为布尔值的函数;第二个参数是需要分区的列表。
该函数返回一个二元组,第一项是所有谓词返回 true 的元素组成的列表,第二项是所有谓词返回 false 的元素组成的列表。
fun isEven x = x mod 2 = 0
val lst = [1, 2, 3, 4, 5]
val (evens, odds) = List.partition isEven lst
(* evens = [2, 4], odds = [1, 3, 5] *)
在上面的例子中,isEven
是一个谓词函数,用于判断一个整数是否为偶数。List.partition isEven lst
将列表 lst
中的元素根据 isEven
函数进行分区,得到两个列表:一个包含所有偶数,另一个包含所有奇数。这两个列表保存在 evens
和 odds
变量中。