Belajar Haskell - Instalasi & Hello World
Episode 3 of 23

Belajar Haskell - Instalasi & Hello World

Menuntun instalasi toolchain Haskell lewat GHCup beserta verifikasi versi GHC dan cabal, lalu menulis dan menjalankan program pertama main dengan putStrLn, baik langsung via runghc, di GHCi, maupun lewat proyek cabal yang diinisialisasi dengan cabal init.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 2 kita memahami arsitektur toolchain — rantai kompilasi GHC dan peran setiap komponen — saatnya turun tangan: memasang toolchain dengan benar dan menulis program Haskell pertama. Episode ini adalah gerbangnya: jika instalasi beres dan hello world berjalan, seluruh series bisa diikuti tanpa hambatan teknis.

Mengapa episode ini penting? Karena sebagian besar kesulitan pemula Haskell bukan di bahasa itu sendiri, melainkan di setup toolchain yang kurang tepat. Compiler yang versinya bentrok dengan HLS, cabal yang tidak menemukan GHC, atau PATH yang belum diatur — semua berujung pada frustrasi yang sebenarnya bisa dicegah dengan install yang benar sejak awal.

Instalasi GHCup

GHCup adalah installer toolchain standar Haskell. Ia mengelola GHC, cabal, stack, dan HLS dalam satu alat. Install dengan satu perintah:

Install GHCup
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

Installer akan bertanya beberapa hal (mode pre-configured PATH, dukungan haskell-language-server, dan lain-lain). Disarankan menjawab ya untuk konfigurasi otomatis PATH agar ghcup, ghc, dan cabal langsung tersedia. Setelah selesai, tutup dan buka lagi terminal (atau jalankan source ~/.bashrc sesuai prompt) agar perubahan PATH aktif.

Install GHC 9.14.1 LTS dan cabal

Series ini memakai GHC 9.14.1 — rilis 19 Desember 2025, versi pertama berstatus LTS dengan dukungan minimal dua tahun. Install GHC dan cabal versi recommended:

Install GHC dan cabal
ghcup install ghc recommended
ghcup install cabal recommended
ghcup set ghc recommended

ghcup set ghc recommended menjadikan GHC tersebut default untuk seluruh sesi. Jika kalian butuh versi lain di proyek berbeda, ghcup set bisa berpindah kapan saja — inilah keunggulan GHCup dibanding install compiler manual.

Menggunakan ghcup tui

GHCup punya antarmuka interaktif bernama ghcup tui untuk melihat dan mengelola semua versi yang terinstall:

Buka GHCup TUI
ghcup tui

Di sini kalian bisa melihat status GHC, cabal, stack, dan HLS, menandai versi yang aktif (tagged), menginstall versi baru, dan menghapus versi lama. Untuk verifikasi cepat tanpa TUI, ghcup list menampilkan semua versi yang tersedia.

Verifikasi Toolchain

Sebelum menulis kode, pastikan semuanya terpasang dengan benar:

Verifikasi versi
ghc --version
cabal --version
ghcup list

ghc --version harus mencetak versi 9.14.1, dan cabal --version mencetak versi cabal terbaru (biasanya 3.12.x). Jika ghc tidak ditemukan, cek apakah ~/.ghcup/bin ada di PATH:

Cek PATH GHCup
echo $PATH
ls ~/.ghcup/bin

Hello World Pertama

Buat direktori lab dan file pertama kalian:

Siapkan direktori lab
mkdir -p ~/haskell-lab && cd ~/haskell-lab

Lalu tulis program paling sederhana:

Main.hs
main :: IO ()
main = putStrLn "Hello, Haskell!"

main :: IO () adalah tipe signature: main adalah aksi IO yang menghasilkan nilai (). putStrLn "Hello, Haskell!" adalah aksi yang mencetak string diikuti baris baru. Di Haskell, mencetak ke layar adalah efek samping, jadi ia harus hidup di dalam monad IO — detail penuhnya di episode 11.

Tiga Cara Menjalankan Program

1. Langsung dengan runghc

Jalankan dengan runghc
runghc Main.hs

runghc menafsirkan file tanpa menghasilkan binary — cara tercepat untuk mencoba file kecil dan script. Cocok untuk praktik di series ini.

2. Kompilasi dengan ghc

Kompilasi dan jalankan
ghc -O2 -o hello Main.hs
./hello

Ini menghasilkan binary native hello. Untuk program sederhana seperti ini, perbedaan kecepatan eksekusi tidak terasa, tapi binary hasil kompilasi penting saat kita masuk ke produksi.

3. Melalui GHCi

Jalankan di GHCi
$ ghci Main.hs
ghci> main
Hello, Haskell!
ghci> :quit
Leaving GHCi.

Memuat Main.hs ke GHCi lalu memanggil main — mode ini berguna saat kalian ingin bermain-main dengan fungsi lain di file yang sama.

Tip

Selama dua fase awal series (episode 3-8), runghc dan GHCi adalah teman terbaik kalian: cepat, tanpa build step, dan langsung memberi umpan balik. Kita baru benar-benar beralih ke proyek cabal di episode 9.

Mengenal cabal init: Proyek Formal Pertama

Untuk struktur proyek yang rapi, inisialisasi proyek cabal:

Inisialisasi proyek cabal
cd ~/haskell-lab
cabal init --interactive

cabal init --interactive akan bertanya nama paket, versi, dan lain-lain; untuk cepat, gunakan --non-interactive dengan nama paket:

Inisialisasi cepat
cabal init --non-interactive --name=hello-lab

Ini menghasilkan struktur:

Struktur proyek cabal
hello-lab/
  hello-lab.cabal
  app/
    Main.hs
  CHANGELOG.md

Jalankan dengan:

Build dan run via cabal
cd hello-lab
cabal build
cabal run

cabal build mengkompilasi paket, dan cabal run menjalankan executable utama. Output-nya harus mencetak Hello, Haskell!. Sepanjang series, cabal run akan menjadi cara utama kita menjalankan contoh yang lebih besar.

Warning

Jika cabal build mengunduh banyak paket di percobaan pertama, itu normal — cabal sedang mengunduh index Hackage dan dependensi. Pastikan jaringan stabil, karena putus di tengah unduhan adalah satu-satunya penyebab umum kegagalan di langkah ini.

Ringkasan Instalasi

Yang sudah kalian lakukan di episode 3:

  • GHCup terinstall lewat script resmi, dengan PATH dikonfigurasi otomatis.
  • GHC 9.14.1 LTS dan cabal versi recommended terinstall, diverifikasi dengan ghc --version dan cabal --version.
  • Hello World berjalan via tiga jalur: runghc, ghc -O2, dan GHCi.
  • Proyek cabal pertama (hello-lab) dibuat dan berhasil di-build dan di-run.

Penutup

Inti yang harus dibawa pulang:

  • Install toolchain via GHCup; jangan menginstall GHC manual dari tarball.
  • Verifikasi dengan ghc --version (9.14.1) dan cabal --version sebelum menulis kode.
  • Program minimal adalah main :: IO () dengan putStrLn di dalamnya.
  • Tiga cara menjalankan: runghc (cepat), ghc -O2 (binary), dan GHCi (interaktif).

Di episode 4 selanjutnya kita akan membahas sintaks dasar Haskell: definisi dan fungsi — cara mendefinisikan fungsi dengan pola argumen, guards untuk percabangan, binding where dan let, serta aturan layout berbasis indentasi yang menggantikan kurung kurawal. Pastikan runghc kalian berfungsi, karena mulai episode ini kita akan banyak mengetik kode!