我正在尝试使用此功能删除列表中的重复项。它删除重复项,但以相反的顺序返回列表。我有点不确定如何在没有丑陋解决方案的情况下解决这个问题。

最佳答案

已经有其他答案显示了对此的各种实用解决方案,但我想您对使代码工作的最小更改感兴趣。在函数式编程中使用累加器时,您通常最终会在此过程中反转列表 - 对此的标准解决方案是在最后反转列表,您可以使用 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/

10-12 03:51