使用 OCaml 标准库函数排序列表

dan*_*004 2 ocaml functional-programming list

我正在学习 OCaml 并在订购数据方面进行各种练习。我想了解如何使用标准图书馆列表进行订购

例如,我想使用这些函数对这个数组进行排序 [94; 50; 6; 7; 8; 8]

List.sort 
List.stable_sort 
List.fast_sort 
List.unique_sort
Run Code Online (Sandbox Code Playgroud)

这样做的语法是什么?

cag*_*ago 5

如果要在列表中使用这些函数,则必须指定比较函数。

从文档中引用:

如果比较函数的参数相等,则比较函数必须返回 0,如果第一个较大则返回正整数,如果第一个较小则返回负整数

在模块中,Pervasives您有一个多态比较函数:

val compare : 'a -> 'a -> int
Run Code Online (Sandbox Code Playgroud)

所以,在你的情况下,你可以这样做:

List.sort compare [94; 50; 6; 7; 8; 8]
Run Code Online (Sandbox Code Playgroud)

  • 这在大多数情况下会起作用,但`myCompare 1 1` 将返回`-1`。你总是可以这样做,`(fun xy -> ~- (compare xy))`。 (2认同)