2012-09-27 11 views
5

Haskell'de tüm işlevler orijinal olarak körelmiş, değil mi?Haskell - Curried hakkında

Yani, hadi max işlevine bakalım ve bunun nasıl çalıştığını anladığım şeyi yazacağım.

Böyle bir şey yazarken:

max 4 5 

ne olur, yeni bir funcion içten, ve bir değer recieves 4 değerine sahip olduğunu yaratılmış olmasıdır yani bu fonksiyon 5 ve doğru uygulandığında değer döndü mü?

Yanlış bir şey mi söyledim ya da bu doğru mu?

+4

Akranları hatırla: Yorumlarda oylamalarınızı haklı çıkarın. –

+0

Dilbilimsel hatalara sahip olmanın nedeni, soruların anlaşılması zorsa, açıklama yapmayı istemek için iyi bir gerekçe değil. –

+1

Bir Soru-Cevap sitesinde eksik bilgi için indirim yapamazsınız, ancak çaba sarf etmeden yapabilirsiniz, ancak sorunun iyi anlaşıldığını ve sorunu çözmek için net (başarılı) çaba gösterdiğini düşünüyorum. Bazı dilbilgisini konu-fiil-nesnesine göre düzelttim, çünkü nesne-fiil-konu anlamını bir şekilde gözlemliyordu. – AndrewC

cevap

9

Bu doğru.

-- Function type right-associativity: 
a -> b -> c = a -> (b -> c) 

-- Function application left-associativity: 
f x y = (f x) y 

Bu iki kimlikler birlikte çalışmak ve curried dili üretmek: Tüm en önemli kimliklerin ikisini ezberleyerek ne olduğunu tımar hatırlıyorum.

+0

@ user428691 Yani 'max 4 5'' (maks 4) 5' ve 'max 4 :: Tamsayı -> Tamsayı' için kısadır, bu da sizin söylediğiniz gibi bir işlev anlamına gelir. – AndrewC

+0

Mükemmel, teşekkürler – elf