2016-11-09 11 views
6

私はList.distinct機能を再実装しようとしています警告しかし、それは私にはあまり意味がありません。これは私がdiを実行せずに元のリストを返すように導くからです不本意な論理。奇妙なFSharpLint

これはFSharpLintのバグですか?

+3

バグかもしれません。フォールドバックとは対照的に折り畳まれていた場合、少し奇妙なメッセージが表示されれば、これはかなり合理的です。 – scrwtp

+0

私は、この機能があなたが思うとはっきりとしていないことを指摘しなければなりません。まず、 'folder'の両方のパラメータがリストであることから、' distinct'のパラメータはリストのリストでなければならないことを意味します。 –

+0

@Fyodor FSIで試したように、意味が分かりません。関数の型は '' a list: '' a:equality'のリストです。そして、 '[1; 0; 0] 'それは私に正しい出力を与えた' [1; 0] '。私は何か間違ってコピーしましたか? – rexcfnghk

答えて

6

明らかにそれは間違ったルールです。 FSharpLintのdefault configurationからこの抜粋を見てみましょう:

List.fold f x [] ===> x 
Array.fold f x [||] ===> x 
List.foldBack f x [] ===> x 
Array.foldBack f x [||] ===> x 

それはfold、ここfoldbackも同じなので、2つの間のシグネチャの違いに従っていません。

初期状態と収集引数の順序は、"mnemonic" approachfoldbackの定義を参照してください。

+1

ありがとうございます。私は[PRhashLint](https://github.com/fsprojects/FSharpLint/pull/190)を送ってこれを修正しました。 – rexcfnghk