我试图重新实现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