這個問題的靈感來自此answer另一個問題時,表示可以使用的功能的列表中刪除所限定的元件的每次發生爲:Haskell的:類型推斷和功能組成
removeall = filter . (/=)
工作出來從類型filter
,(/=)
和(.)
鉛筆和紙,函數的類型爲
removeall :: (Eq a) => a -> [a] -> [a]
這正是你會根據其合同的期望。然而,隨着GHCI 6.6,我得到
gchi> :t removeall
removeall :: Integer -> [Integer] -> [Integer]
,除非我明確指定的類型(在這種情況下正常工作)。爲什麼Haskell推斷這個函數的具體類型?