Ocaml:使用list.lenght创建新列表

Ocaml:使用list.lenght创建新列表,ocaml,Ocaml,我试着写一个程序,按升序(列表中元素的数量)对列表进行排序 我想我必须使用list.lenght来检索列表的长度,然后我必须对这些值使用list.sort。我很难找到如何使用list.lenght创建一个新列表。不知道从哪里开始 因为不能将list.length与列表一起使用,例如list.length[[5;71;32][33;32]]您可以在任何列表上使用List.length: # List.length [[5; 71; 32]; [33; 32]];; - : int = 2 只是它

我试着写一个程序,按升序(列表中元素的数量)对列表进行排序

我想我必须使用
list.lenght
来检索列表的长度,然后我必须对这些值使用
list.sort
。我很难找到如何使用
list.lenght
创建一个新列表。不知道从哪里开始


因为不能将
list.length
与列表一起使用,例如
list.length[[5;71;32][33;32]]

您可以在任何列表上使用List.length:

# List.length [[5; 71; 32]; [33; 32]];;
- : int = 2
只是它对排序并没有真正的帮助:-)


对列表排序时,提供了一个比较函数。它可以是确定两个值的所需顺序的任何所需函数。您应该考虑要使用的比较函数。

您不需要
List.length
,并且在填充之前不能创建特定长度的“空”列表。列表的长度随着填充而增加(或者更确切地说,使用旧列表和一个附加元素创建一个新列表)。您需要做的是递归地遍历旧列表及其子列表,并在运行时构建一个新列表。我建议您尝试在不进行排序的情况下进行此操作,以减小问题的规模。一旦你有工作,排序应该是微不足道的。好的,谢谢,我明白了。因此,我应该比较列表中的元素数量,然后使用
list.sort compare
对它们进行排序。我仍然很难找到返回列表数量并进行比较的方法。