在OCaml中给定条件的情况下从列表中递归删除元素?

时间:2019-02-20 17:58:01

标签: ocaml

我想从列表中删除大于数字n的元素。

let rec remove_greater lst n =

我是OCaml的新手,我不确定如何解决此问题,也不知道如何从列表中删除元素。任何建议/提示表示赞赏:)谢谢

2 个答案:

答案 0 :(得分:2)

OCaml列表是不可变的,因此您不能从其中删除元素。您真正想要做的就是用您想要保留的元素制作一个新列表。

解决此问题的自然方法是使用递归函数,该函数查看列表的两种情况:空列表和非空列表。非空列表的头和尾都有

如果您要讨论一些特定的代码,那么SO读者将更容易获得帮助。我们不想为您编写代码:-)

答案 1 :(得分:0)

List.filter将执行您想要的操作。如前所述,在ocaml中列表是不可变的。 List.filter将构造一个新列表,其中仅包含满足传递给该函数的谓词的元素。