Ta kwestia była inspirowana przez ten answer do innej kwestii, wskazując, że można usunąć wszystkie wystąpienia elementu z listy za pomocą funkcji zdefiniowano jako:Haskell: rodzaj wnioskowania i funkcja skład
removeall = filter . (/=)
Praca it out z ołówka i papieru z rodzajów filter
, (/=)
i (.)
funkcja ma typ
removeall :: (Eq a) => a -> [a] -> [a]
dokładnie to, czego można się spodziewać na podstawie jego zamówienia. Jednakże w przypadku GHCi 6.6 otrzymuję
gchi> :t removeall
removeall :: Integer -> [Integer] -> [Integer]
, chyba że określę typ jawnie (w takim przypadku działa poprawnie). Dlaczego Haskell wnioskuje o takim specyficznym typie funkcji?