Study
Haskell

Let & Where

Penjelasan

`let...in` dan `where` sama-sama dipakai untuk mendefinisikan binding sementara (nilai perantara) di dalam sebuah fungsi, supaya ekspresi yang kompleks bisa dipecah jadi bagian-bagian yang lebih mudah dibaca. `let` mendefinisikan binding SEBELUM dipakai (`let x = ... in ekspresi`), sedangkan `where` mendefinisikan SETELAH ekspresi utama, tapi berlaku untuk keseluruhan fungsi (termasuk semua guards).

Contoh Konsep

-- let...in
luasLingkaran :: Double -> Double
luasLingkaran r = let phi = 3.14159 in phi * r * r

-- where, berlaku untuk semua guard di bawahnya
klasifikasiBMI :: Double -> Double -> String
klasifikasiBMI berat tinggi
  | bmi < 18.5 = "Kurus"
  | bmi < 25.0 = "Normal"
  | otherwise  = "Gemuk"
  where
    bmi = berat / (tinggi * tinggi)

Praktikum

Buat fungsi hitungTotal :: Double -> Double -> Double (harga, pajakPersen) yang memakai where untuk mendefinisikan binding pajak = harga * pajakPersen / 100, lalu mengembalikan harga + pajak.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Pakai `where` kalau binding itu dipakai di SEMUA guard sebuah fungsi (didefinisikan sekali, berlaku untuk semuanya), dan `let...in` kalau binding hanya dibutuhkan di SATU ekspresi tertentu saja.