📜  partition sml (1)

📅  最后修改于: 2023-12-03 14:45:05.469000             🧑  作者: Mango

SML 中的分区函数

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 函数进行分区,得到两个列表:一个包含所有偶数,另一个包含所有奇数。这两个列表保存在 evensodds 变量中。