2013-10-02 79 views
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 
+6

這是[單態限制](http://www.haskell.org/haskellwiki/Monomorphism_restriction)。 –

+6

......這可能是Haskell98的一個特性,它總體上導致了最大的混亂。因此,它是**可怕的單形態限制。 – leftaroundabout

+0

所以這只是因爲一些語言技術的特質,而不是我應該知道的。對? – user1358

回答

0

這是一種多晶型GHCi缺省類型。

這些規則允許使用gchi作爲「用戶友好」的「計算器」,並且不使用簽名。

但是當然,這些規則不僅有所幫助,而且有時會阻礙。

相關問題