Haskell
Pengenalan Haskell
Pengertian Haskell, bahasa pure functional programming dengan static typing kuat dan lazy evaluation.
IO & Do Notation di Haskell
Bagaimana Haskell yang pure functional tetap bisa melakukan aksi IO (cetak layar, baca input) lewat tipe IO dan blok do.
Binding & Tipe Data Dasar
Binding nilai ke nama di Haskell (bukan "variabel" karena immutable), dan tipe data dasar: Int, Double, Bool, Char, String.
Fungsi di Haskell
Mendefinisikan fungsi di Haskell dengan pola nama parameter = ekspresi, tanpa keyword return.
If-Then-Else & Guards
if sebagai ekspresi (wajib punya else) di Haskell, dan guards sebagai alternatif yang lebih ringkas untuk banyak kondisi.
List di Haskell
Struktur data list sebagai fondasi Haskell, operator (:) untuk cons, dan fungsi list dasar.
List Comprehension
Membuat list baru dari list lain dengan sintaks ringkas [ekspresi | x <- list, kondisi], mirip notasi matematika himpunan.
Rekursi di Haskell
Rekursi sebagai pengganti loop di Haskell, dengan base case dan recursive case.
Higher-Order Function: map, filter, foldr
Fungsi yang menerima fungsi lain sebagai parameter — map, filter, dan fold sebagai pengganti idiomatik loop manual.
Tuple di Haskell
Tuple untuk mengelompokkan nilai bertipe BERBEDA dengan jumlah tetap, berbeda dari list yang harus satu tipe.
Pattern Matching di Haskell
Mendefinisikan fungsi dengan beberapa persamaan berbeda berdasarkan bentuk/nilai parameter (pattern matching).
Algebraic Data Type (data)
Membuat tipe data kustom dengan keyword data, termasuk tipe enum sederhana dan tipe dengan field.
Maybe: Menghindari Null
Tipe Maybe (Just nilai atau Nothing) sebagai cara Haskell menghindari null/undefined sepenuhnya.
Type Class Dasar: Eq, Ord, Show
Type class sebagai cara Haskell mendefinisikan "kemampuan" yang bisa dimiliki banyak tipe berbeda, mirip interface.
Let & Where
Mendefinisikan binding sementara di dalam fungsi dengan let...in dan where.
Lazy Evaluation di Haskell
Haskell hanya menghitung nilai saat benar-benar dibutuhkan (lazy), memungkinkan struktur data tak terhingga.
Currying & Partial Application
Semua fungsi Haskell sebenarnya menerima satu parameter (curried), memungkinkan partial application yang alami.
Operator ($) dan Komposisi Fungsi (.)
Operator ($) untuk menghindari kurung berlapis, dan operator (.) untuk menggabungkan beberapa fungsi jadi satu.
Tugas Akhir
Latihan akhir menggabungkan tipe data kustom, pattern matching, Maybe, dan higher-order function dalam satu program Haskell.