, örneğin, bir isim için bir işlev bağlamak için genellikle uygundur:Bir işlevi başka bir adama ne zaman bağlayabilirim? tercüman çalışırken
ghci> let f = (+1)
ghci> f 1
2
Bu işlevin (+1)
adını f
Takma Adlar. Basit. Bununla birlikte, bu her zaman işe yaramamaktadır. Bir örnek, bir hata neden Data.List
modülünden nub
takma denemeye çalıştığını buldum. Ben açıkça x
o zaman hatasız çalışır argüman devlet Örneğin,
ghci> :m Data.List
ghci> nub [1,2,2,3,3,3]
[1,2,3]
ghci> let f = nub
ghci> f [1,2,2,3,3,3]
<interactive>:1:14:
No instance for (Num())
arising from the literal `3'
Possible fix: add an instance declaration for (Num())
In the expression: 3
In the first argument of `f', namely `[1, 2, 2, 3, ....]'
In the expression: f [1, 2, 2, 3, ....]
Ancak:
ghci> let f x = nub x
ghci> f [1,2,2,3,3,3]
[1,2,3]
Herkes bu davranış açıklayabilir misiniz?
[Bu soru ve cevap] 'a bakın (http://stackoverflow.com/questions/4575040/what-is-xnomonomorphismrestriction). – gspr
Teşekkürler. Bunu bir cevap olarak gönderdiyseniz (muhtemelen biraz genişletilmiş) kabul ediyorum. –
Hayır, kredinin neden olduğu kredi (yani bağlandığım yanıt). :-) – gspr