我正在尝试使用此功能删除列表中的重复项。它删除重复项,但以相反的顺序返回列表。我有点不确定如何在没有丑陋解决方案的情况下解决这个问题。
最佳答案
已经有其他答案显示了对此的各种实用解决方案,但我想您对使代码工作的最小更改感兴趣。在函数式编程中使用累加器时,您通常最终会在此过程中反转列表 - 对此的标准解决方案是在最后反转列表,您可以使用 List.rev
:
let rd list=
let rec func list nlist=
match list with
| [] -> List.rev nlist // Reverse the list before returning it
| x::xs ->
if not (isMember x nlist) then
func xs (x::nlist)
else
func xs nlist
func list []
除了添加
List.rev
,我还将最后一行更改为 func list []
(您的代码在那里有 add
,但这可能是一个错字)。我还将 isMember x nlist <> true
更改为更惯用的 not (isMember x nlist)
。关于list - F# 删除重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39774122/