Haskell 2010言語レポートは、セクション20.10.1.1で次のように述べています。
deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
実際、GHCライブラリに実装すると
deleteBy :: (b -> a -> Bool) -> b -> [a] -> [a]
ただし、実際には、タイプを注釈付きの前者に制限します。
したがって、たとえば、次のように言うことはできません。
foo = deleteBy fsteq 42 [(43, "foo"), (44, "bar"), (42, "baz")] where
fsteq a (b,_) = a == b
Int
と同じではないため(Int, String)
。
これには何か正当な理由がありますか?
私が尋ねている理由は、正当な理由がない場合は、現在行っているData.ListのFregedeleteBy
ポートに、より一般的なタイプを含めるためです。しかし、多分私は何かを見落としていますか?
編集:@hammarが指摘したように、これは他のxxxBy関数にも当てはまります。