我試圖重新實現List.distinct
功能:奇怪FSharpLint警告
let inline distinct list =
let folder curr = function
| [] -> [curr]
| l -> if List.contains curr l then l else curr :: l
List.foldBack folder list []
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我得到了皮棉警告說
List.foldBack f x []
也許能夠被重構到x
然而,這對我來說沒有多大意義,因爲這導致我返回原始列表而不執行di操作邏輯的邏輯。
這是FSharpLint的錯誤嗎?
可能是一個錯誤。如果這是一個摺疊而不是折返的話,這將是一個相當合理的。 – scrwtp
我必須指出,這個功能絕對不會做你認爲它的功能。從「folder」的兩個參數都是列表開始,這意味着「distinct」的參數必須是列表的列表。 –
@Fyodor我不明白你的意思,因爲我已經在FSI嘗試過,函數的類型是「列表 - >'列表'a:平等'。並輸入'[1; 0; 0]'它給了我''1的正確輸出。 0]'。我複製了錯誤的東西嗎? – rexcfnghk