1
當匿名函數綁定到名稱時,爲什麼鍵入的推斷方式不同?Haskell - 爲什麼在這些情況下推斷類型不同?
Prelude> :type (+)
(+) :: Num a => a -> a -> a
Prelude> let bar (x,y) = x+y
Prelude> :type bar
bar :: Num a => (a, a) -> a
Prelude> :type \(x,y)->x+y
\(x,y)->x+y :: Num a => (a, a) -> a
Prelude> let foo = \(x,y)->x+y
Prelude> :type foo
foo :: (Integer, Integer) -> Integer
這是[單態限制](http://www.haskell.org/haskellwiki/Monomorphism_restriction)。 –
......這可能是Haskell98的一個特性,它總體上導致了最大的混亂。因此,它是**可怕的單形態限制。 – leftaroundabout
所以這只是因爲一些語言技術的特質,而不是我應該知道的。對? – user1358