什么';在OCaml中,从列表中删除元素的标准方法是什么?

什么';在OCaml中,从列表中删除元素的标准方法是什么?,ocaml,Ocaml,在common lisp中,我们可以使用remove函数 似乎OCaml中没有这样的方法?OCaml中的列表是不可变的。所以你不能从他们身上移除东西。您通常会创建另一个列表,其中没有您不想要的内容。为此,您可以使用List.filter 如果你一定要有可变列表,你可以。在电池中有一种叫做a的东西,它可能和你想要的一样。(但是,它是一个双链接列表,与Lisp列表不同) 在我看来,OCaml的一大优点是,纯函数子集确实非常有效。我从来没有在自己的项目中使用过可变列表。到底应该如何删除?你只是想看看名

在common lisp中,我们可以使用
remove
函数


似乎OCaml中没有这样的方法?

OCaml中的列表是不可变的。所以你不能从他们身上移除东西。您通常会创建另一个列表,其中没有您不想要的内容。为此,您可以使用
List.filter

如果你一定要有可变列表,你可以。在电池中有一种叫做a的东西,它可能和你想要的一样。(但是,它是一个双链接列表,与Lisp列表不同)


在我看来,OCaml的一大优点是,纯函数子集确实非常有效。我从来没有在自己的项目中使用过可变列表。

到底应该如何删除?你只是想看看名单吗?(,至少在普通的Lisp意义上是一个非常非常可怕的野兽……开始/结束范围、计数、键和谓词,哦,天哪!)我明白了。我应该使用List.filter.Hi Jeffrey,如果我想在一个数据结构中存储一些元素,而直接编写递归函数来实现这一点是不合适的,该怎么办?简短回答:它总是合适的!:-)更详细的回答:如果你有充分的理由,你可以使用可变结构。您必须将此作为一个更具体、单独的问题来提问,以获得更好的答案。我是否可以列出
列表。筛选
停止删除一个元素?也许我有看起来相同的元素副本,但只想删除一个。要回答我自己的问题,一个解决方案是使用Core的
filteri
并使用要删除的元素的索引过滤该项。