yang tampaknya menjadi cara yang lebih matematis
bahasa fungsional diinspirasi oleh lambda calculus . Dalam bidang ini, tanda kurung tidak digunakan untuk aplikasi fungsi.
Saya juga berpikir bahwa gaya yang terakhir jauh lebih jelas dan mudah dibaca daripada tanpa parens.
Keterbacaan ada di mata yang melihatnya. Anda tidak terbiasa membacanya. Ini agak seperti operator matematika. Jika Anda memahami asosiatifnya, Anda hanya perlu beberapa orangtua untuk memperjelas struktur ekspresi Anda. Seringkali Anda tidak membutuhkannya.
Kari juga merupakan alasan yang baik untuk menggunakan konvensi ini. Di haskell, Anda dapat menentukan yang berikut:
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
Dengan parens, Anda dapat menggunakan dua konvensi: f(5, 6)
(tidak kari) atau f(5)(6)
(kari). Sintaks haskell membantu membiasakan diri dengan konsep currying. Anda masih dapat menggunakan versi non-kari, tetapi lebih menyakitkan untuk menggunakannya dengan kombinator
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
Perhatikan bagaimana versi kedua memaksa Anda untuk mendaftarkan x sebagai variabel, dan bahwa subekspresi adalah fungsi yang mengambil bilangan bulat dan menambahkan 5 ke dalamnya? Versi kari jauh lebih ringan, tetapi juga dianggap oleh banyak orang sebagai lebih mudah dibaca.
Program Haskell menggunakan ekstensif aplikasi parsial dan kombinator sebagai sarana untuk mendefinisikan dan menyusun abstraksi, jadi ini bukan contoh mainan. Antarmuka fungsi yang baik akan menjadi tempat di mana urutan parameter menyediakan penggunaan kari yang ramah.
Poin lain: fungsi tanpa parameter harus dipanggil dengan f()
. Dalam haskell, karena Anda hanya memanipulasi nilai yang dievaluasi malas malas, Anda hanya menulis f
, dan menganggapnya sebagai nilai yang akan perlu melakukan beberapa perhitungan ketika diperlukan. Karena evaluasinya tidak akan memiliki efek samping, tidak masuk akal untuk memiliki notasi yang berbeda untuk fungsi tanpa parameter dan nilai yang dikembalikan.
Ada juga konvensi lain untuk aplikasi fungsi:
- Lisp: (fx) - awalan dengan tanda kurung eksternal
- Keempat: xf - postfix