Study
Haskell

Lazy Evaluation di Haskell

Penjelasan

Haskell bersifat LAZY — sebuah ekspresi baru benar-benar dihitung (dievaluasi) ketika NILAINYA benar-benar dibutuhkan, bukan langsung saat didefinisikan. Ini memungkinkan hal yang mustahil di bahasa strict (seperti kebanyakan bahasa lain): mendefinisikan list TAK TERHINGGA, karena Haskell hanya menghitung elemen yang benar-benar diminta.

Contoh Konsep

-- List tak terhingga, aman karena lazy evaluation
semuaAngka :: [Integer]
semuaAngka = [1..]

-- Hanya menghitung 5 elemen pertama, tidak mencoba menghitung SEMUA angka
take 5 semuaAngka   -- [1, 2, 3, 4, 5]

-- Fibonacci tak terhingga, dihitung lazy
fibs :: [Integer]
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

take 8 fibs   -- [0, 1, 1, 2, 3, 5, 8, 13]

Praktikum

Buat list tak terhingga kelipatanLima berisi semua kelipatan 5 dari [5, 10..], lalu ambil 6 elemen pertamanya dengan take.

Editor Latihan

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

Tips

Lazy evaluation berarti kamu bisa mendefinisikan struktur data "potensial tak terhingga" tanpa takut program hang — Haskell hanya menghitung sebanyak yang benar-benar dipakai, kapan pun itu dibutuhkan.