If-Then-Else & Guards
Penjelasan
`if`/`then`/`else` di Haskell adalah EKSPRESI, bukan statement — karena itu `else` WAJIB ada (setiap cabang harus menghasilkan nilai bertipe sama). Untuk banyak kondisi, guards (`| kondisi = hasil`) biasanya lebih idiomatik dan mudah dibaca daripada if/else berantai.
Contoh Konsep
-- if/else sebagai ekspresi, else wajib ada
status :: Int -> String
status nilai = if nilai >= 70 then "Lulus" else "Tidak lulus"
-- Guards, lebih ringkas untuk banyak kondisi
predikat :: Int -> String
predikat nilai
| nilai >= 85 = "A"
| nilai >= 70 = "B"
| otherwise = "C" -- otherwise = kondisi default, selalu True
Praktikum
Buat fungsi kategoriUmur :: Int -> String memakai guards, mengembalikan "Anak" (< 13), "Remaja" (13-17), atau "Dewasa" (>= 18).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Selalu sertakan `otherwise` sebagai guard terakhir (mirip `default`/`else`) — kalau tidak ada guard yang cocok dan tidak ada `otherwise`, Haskell akan melempar error "Non-exhaustive patterns" saat runtime.