Currying & Partial Application
Penjelasan
Di Haskell, SEMUA fungsi sebenarnya hanya menerima SATU parameter — fungsi yang "terlihat" menerima banyak parameter (`tambah a b = a + b`) sebenarnya adalah fungsi yang menerima `a`, lalu MENGEMBALIKAN fungsi baru yang menerima `b`. Ini disebut currying, dan konsekuensinya kamu bisa memberi SEBAGIAN argumen saja (partial application) untuk mendapatkan fungsi baru.
Contoh Konsep
tambah :: Int -> Int -> Int
tambah a b = a + b
-- tambah sebenarnya bertipe: Int -> (Int -> Int)
tambahLima :: Int -> Int
tambahLima = tambah 5 -- partial application, cuma kasih 1 dari 2 argumen
tambahLima 10 -- 15, sama dengan tambah 5 10
map (tambah 10) [1, 2, 3] -- [11, 12, 13]
Praktikum
Dari fungsi kali :: Int -> Int -> Int (mengalikan dua angka), buat fungsi baru kaliDua lewat partial application yang mengalikan angka apa pun dengan 2.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Currying menjelaskan kenapa tipe fungsi 2 parameter ditulis `Int -> Int -> Int` (bukan `(Int, Int) -> Int`) — tanda panah berulang ini secara harfiah merepresentasikan "fungsi yang mengembalikan fungsi".