bu daha matematiksel yol gibi görünüyor
fonksiyonel diller, lambda matematiğinden ilham almaktadır . Bu alanda, parantez, işlev uygulaması için kullanılmaz.
Ayrıca son modelin parens olmadan çok daha net ve okunabilir olduğunu düşünüyorum.
Okunabilirlik, sahibinin gözündedir. Okumaya alışkın değilsin. Matematiksel operatörler gibi biraz. İlişkilendirmeyi anlarsanız, ifadenizin yapısını netleştirmek için sadece birkaç ebeveyne ihtiyacınız vardır. Genellikle onlara ihtiyacınız olmaz.
Köriler de bu sözleşmeyi kullanmak için iyi bir nedendir. Haskell'de, aşağıdakileri tanımlayabilirsiniz:
add :: Int -> Int -> Int
add x y = x + y
x = add 5 6 -- x == 11
f = add 5
y = f 6 -- y == 11
z = ((add 5) 6) -- explicit parentheses; z == 11
Parens ile iki adet kongre kullanabilirsiniz: f(5, 6)
(kurutulmuş) veya f(5)(6)
(kurutulmuş). Haskell sözdizimi, körleme konseptine alışmaya yardımcı olur. Körili olmayan bir sürümü hala kullanabilirsiniz, ancak kombüratörlerle kullanmak daha acı vericidir.
add' :: (Int, Int) -> Int
add' (x, y) = x + y
u = add'(5, 6) -- just like other languages
l = [1, 2, 3]
l1 = map (add 5) l -- [6, 7, 8]
l2 = map (\x -> add'(5, x)) l -- like other languages
İkinci versiyonun x'i bir değişken olarak kaydetmeye nasıl zorladığına ve alt ifadenin bir tamsayı alan ve ona 5 ekleyen bir fonksiyon olduğuna dikkat edin. Kurutulmuş versiyonu daha hafiftir, fakat aynı zamanda daha okunaklı olduğu düşünülmektedir.
Haskell programları, kısmi uygulama ve birleştiricilerin, soyutlamaları tanımlamak ve birleştirmek için yoğun bir şekilde kullanılmasını sağlar, bu nedenle bu bir oyuncak örneği değildir. İyi bir fonksiyon arayüzü, parametrelerin sırasının kolay bir şekilde kızartılmış kullanım sağladığı alan olacaktır.
Başka bir nokta: Parametresiz bir fonksiyon ile çağrılmalıdır f()
. Haskell'de, yalnızca değişmez tembel olarak değerlendirilmiş değerleri manipüle ettiğiniz için, sadece yazarsınız f
ve gerektiğinde bazı hesaplamaları gerçekleştirmesi gereken bir değer olarak düşünürsünüz. Değerlendirmesinin herhangi bir yan etkisi olmayacağından, parametresiz işlev ve döndürülen değeri için farklı bir gösterime sahip olmanın anlamı yoktur.
İşlev uygulaması için başka kurallar da vardır:
- Lisp: (fx) - Dış parantez içinde önek
- İleri: xf - postfix