Higher-Order Function: map, filter, foldr
Penjelasan
`map` menerapkan sebuah fungsi ke SETIAP elemen list, menghasilkan list baru. `filter` menyaring elemen berdasarkan kondisi (fungsi yang mengembalikan Bool). `foldr`/`foldl` menggabungkan semua elemen list jadi satu nilai, memakai fungsi akumulator dan nilai awal. Ketiganya adalah pengganti idiomatik untuk loop manual di Haskell.
Contoh Konsep
angka :: [Int]
angka = [1, 2, 3, 4, 5]
map (\x -> x * x) angka -- [1, 4, 9, 16, 25]
filter (\x -> x `mod` 2 == 0) angka -- [2, 4]
foldr (\x acc -> x + acc) 0 angka -- 15, jumlah semua elemen
-- Bisa juga pakai fungsi bernama, bukan lambda
genap :: Int -> Bool
genap x = x `mod` 2 == 0
filter genap angka -- [2, 4]
Praktikum
Dari list [1..10], pakai filter untuk mengambil angka genap, lalu pakai map untuk mengalikannya dengan 10.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
`\x -> ekspresi` adalah sintaks lambda (anonymous function) di Haskell — backslash melambangkan huruf Yunani lambda (λ) karena keterbatasan keyboard, bukan karakter escape seperti di bahasa lain.