Sebelum menyentuh Haskell, kalian perlu menguasai dasar pemrograman, konsep fungsi, tipe data, immutability & pure function. Di episode ini kalian juga menyiapkan GHCup dengan GHC 9.14.1 LTS dan cabal, memasang VS Code beserta Haskell Language Server, serta memverifikasi seluruh environment siap dipakai sepanjang series.

Selamat datang di series Belajar Haskell! Series ini akan membawa kalian menguasai Haskell — bahasa pemrograman purely functional, lazy, dengan type system yang sangat ekspresif — untuk backend service, kompiler, dan aplikasi yang menuntut correctness tinggi. Total ada 23 episode yang tersusun dalam lima fase, dari fondasi konsep sampai production readiness.
Sebelum menjalankan ghci atau cabal run, ada skill dasar dan perangkat yang wajib kalian siapkan. Mengapa prasyarat ini penting? Karena Haskell memaksa kalian berpikir berbeda dari bahasa imperatif: tidak ada for loop untuk mengubah variabel, tidak ada objek dengan state mutabel, dan hampir tidak ada operasi yang melompat keluar dari alur fungsi. Semakin kuat fondasi konsep kalian di episode 0, semakin sedikit rasa frustrasi saat menghadapi monad di episode 11.
Episode 0 ini adalah peta jalan kalian: kita akan memastikan skill dasar terpenuhi, menyiapkan GHCup dengan compiler GHC dan cabal, memasang editor dengan Haskell Language Server, lalu memverifikasi environment untuk pertama kali. Setelah episode ini selesai, seluruh series bisa diikuti dengan nyaman.
Haskell dibangun di atas dua konsep inti: fungsi dan tipe. Kalian wajib paham bahwa fungsi menerima input dan menghasilkan output, dan bahwa tipe menentukan "bentuk" data (angka, teks, boolean, daftar). Jika kalian pernah memakai Python, TypeScript, atau Rust, konsep ini pasti sudah familier:
addOne :: Int -> Int
addOne x = x + 1Perhatikan sintaksnya: addOne :: Int -> Int berarti "fungsi addOne bertipe Int ke Int", dan addOne x = x + 1 adalah definisinya. Tidak ada tanda kurung dan tidak ada keyword return — bagian ini akan kita bedah tuntas di episode 4 dan 5.
Ini justru yang paling penting. Di Haskell, setiap nilai bersifat immutable: sekali dibuat, tidak bisa diubah. Dan fungsi dianggap pure: hasilnya hanya bergantung pada argumennya, tidak membaca atau mengubah keadaan di luar fungsi.
double :: Int -> Int
double x = x * 2double 5 akan selalu 10, apa pun yang terjadi di tempat lain. Tidak seperti count += 1 di bahasa imperatif yang mengubah state global, fungsi ini tidak pernah menyentuh dunia luar. Konsekuensinya: kode Haskell jauh lebih mudah diprediksi, di-test, dan di-refactor — tetapi kalian harus belajar untuk berhenti berpikir "ubah variabel ini" dan mulai berpikir "berikan nilai baru".
Haskell adalah bahasa declarative: kalian mendeskripsikan apa yang ingin dihitung, bukan langkah demi langkah bagaimana menghitungnya. Kalian tidak perlu sudah mahir — cukup terbuka terhadap cara berpikir baru. Pengalaman dengan map/filter/fold di bahasa lain (Python map/filter, JS Array.map, Rust iterator) akan membuat transisi jauh lebih mulus.
Note
Jangan panik jika episode awal terasa berbeda dari bahasa yang biasa kalian pakai. Puncak "oh, begitu rupanya" biasanya terjadi di episode 7 (laziness) dan episode 11 (monads). Yang dibutuhkan di sini hanyalah kemauan mengikuti alurnya secara berurutan.
Haskell mendukung Linux, macOS, dan Windows (lewat WSL2 atau native). Untuk series ini, Linux atau macOS adalah pilihan paling mulus karena GHCup dan cabal berjalan native tanpa hambatan.
GHCup (The Haskell toolchain installer) adalah cara standar mengelola compiler GHC, cabal, dan stack di 2026. Satu perintah menginstall semuanya:
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | shGHCup mengisolasi toolchain di ~/.ghcup, sehingga kalian bisa memiliki beberapa versi GHC sekaligus. Setelah install, muat ulang shell (atau logout/login) agar ghcup tersedia di PATH, lalu install GHC versi yang dipakai series ini:
ghcup install ghc recommended
ghcup install cabal recommendedGHC adalah compiler yang berat. Kompilasi modul besar bisa menghabiskan beberapa GB RAM dan membuat laptop kalian berputar kencang. Untuk kenyamanan sepanjang series, minimal 8GB RAM sangat dianjurkan — 16GB akan membuat episode 21 (profiling) terasa jauh lebih menyenangkan.
VS Code dengan ekstensi Haskell adalah pilihan paling populer karena menggerakkan HLS (Haskell Language Server) yang memberikan IntelliSense, type info saat hover, goto definition, dan auto-complete. GHCup bisa memasang HLS dengan satu perintah:
ghcup install hls recommended
ghci --versionSetelah install, buka VS Code, install ekstensi "Haskell" dari Haskell Foundation, dan buka folder proyek. Saat membuka file .hs, HLS akan memberikan type signature di garis bawah dan error linting langsung — ini aset terbesar kalian untuk belajar tipe.
Warning
HLS butuh versi GHC yang sesuai. Jika VS Code menampilkan "Failed to find HLS" atau mismatch versi, jalankan ghcup set ghc 9.14.1 lalu ghcup set hls recommended agar keduanya konsisten. Detail HLS setup dibahas lagi di episode 9.
Sebelum lanjut ke episode 1, jalankan verifikasi menyeluruh:
ghc --version
cabal --version
ghcup list
echo "main :: IO ()" | ghcighc --version harus mencetak GHC 9.14.1 (rilis 19 Desember 2025, versi LTS pertama), dan cabal --version harus mencetak versi cabal terbaru. Perintah terakhir menjalankan GHCi untuk memastikan REPL berfungsi. Jika semuanya tampil tanpa error, environment kalian sudah siap.
Rangkuman yang sudah kalian siapkan di episode 0:
recommended.ghc --version, cabal --version, dan ghci bekerja tanpa error.Jika ada yang belum terpenuhi, berhenti dulu dan lengkapi sebelum melanjutkan. Perjalanan 22 episode ke depan akan jauh lebih lancar dengan pijakan yang kuat ini.
Inti yang harus dibawa pulang:
ghc --version, cabal --version, dan ghci.Di episode 1 selanjutnya kita akan membahas sejarah, latar belakang, dan mengapa kalian membutuhkan Haskell — dari nama yang diambil dari logician Haskell Curry, komite riset 1987 yang merancang standar lazy functional language, standar Haskell 98/2010, hingga mengapa industri seperti Cardano, Galois, dan FP Complete mempercayakan correctness-critical logic padanya. Pastikan environment kalian sudah siap, karena perjalanan Belajar Haskell baru saja dimulai!