Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List ocaml中的比较函数是什么样子的?_List_Sorting_Compare_Ocaml - Fatal编程技术网

List ocaml中的比较函数是什么样子的?

List ocaml中的比较函数是什么样子的?,list,sorting,compare,ocaml,List,Sorting,Compare,Ocaml,我正在尝试对字符列表使用List.sort,其中最里面的列表代表一个单词,我可以使用compare compare函数按字母顺序对最里面的列表进行排序。我想知道比较函数是什么样子的?它的类型是'a->'a->int.OK,因此字符列表是一个单词,字符列表是单词列表。您正在对单词列表进行排序。单词表的字母顺序是什么?“自行车手”和“自行车短裤”哪一个先到?字典的顺序不一致 如果你想让“自行车短裤”排在第一位,这是(递归的)字典顺序 内置多态compare使用字典顺序。所以你可以直接使用它: # L

我正在尝试对字符列表使用List.sort,其中最里面的列表代表一个单词,我可以使用compare compare函数按字母顺序对最里面的列表进行排序。我想知道比较函数是什么样子的?它的类型是'a->'a->int.

OK,因此
字符列表
是一个单词,
字符列表
是单词列表。您正在对单词列表进行排序。单词表的字母顺序是什么?“自行车手”和“自行车短裤”哪一个先到?字典的顺序不一致

如果你想让“自行车短裤”排在第一位,这是(递归的)字典顺序

内置多态
compare
使用字典顺序。所以你可以直接使用它:

# List.sort compare [[['b'; 'i'; 'k'; 'e'; 'r']];
  [['b'; 'i'; 'k'; 'e']; ['s'; 'h'; 'o'; 'r'; 't'; 's']]];;
- : char list list list =
[[['b'; 'i'; 'k'; 'e']; ['s'; 'h'; 'o'; 'r'; 't'; 's']];
 [['b'; 'i'; 'k'; 'e'; 'r']]
如果你想写你自己的比较函数,它只是一个有两个你想要排序的参数类型的函数。要按忽略单词之间空格的顺序对单词列表进行排序,可以使用此比较功能:

let catcompare a b = compare (List.concat a) (List.concat b)

# List.sort catcompare [[['b'; 'i'; 'k'; 'e']; ['s'; 'h'; 'o'; 'r'; 't'; 's']];
  [['b'; 'i'; 'k'; 'e'; 'r']]];;
- : char list list list =
[[['b'; 'i'; 'k'; 'e'; 'r']];
 [['b'; 'i'; 'k'; 'e']; ['s'; 'h'; 'o'; 'r'; 't'; 's']]]
如果您想对内部列表进行排序,那么问题不在于比较函数。您可以使用相同的内置
compare
。真正的问题是如何将函数应用于列表的所有元素,并将结果收集到列表中。(我将此留作练习。如果您已经在使用
List.sort
,您应该知道在哪里寻找可能的想法。)