PENGANTAR
Pengguna Haskell di Indonesia sangat sedikit. Salah satu faktornya karena Haskell tidak begitu dikenal. Selain itu, banyak yang kesulitan belajar Haskell karena resource belajarnya dirasa kurang banyak.
Sebenarnya ada banyak buku Haskell yang bisa dibaca secara online dengan bebas (free). Tapi, di sini kita akan coba pendekatan yang lain.
PEMBAHASAN
A. SEJARAH HASKELL
Masih banyak di antara kita yang belum tahu bahasa pemrograman Haskell itu seperti apa. Bahkan, beberapa di antaranya berkata baru mendengar bahasa pemrograman yang satu ini. Padahal, Haskell termasuk bahasa pemrograman yang sudah cukup lama. Kemunculan pertamanya adalah pada tahun 1990 dengan versi awal 1.0.
![]() |
Perusahaan Manufaktur Haskell |
Pada tahun 1980, ada banyak bahasa pemrograman functional yang dibuat secara independen oleh banyak research. Pada tahun 1987 terbentuk sebuah komite standarisasi untuk membuat 1 bahasa. Pada tahun 1990 komite memproduksi Haskell 1.0 standar
Setelah beberapa tahun bahasa standar diperbarui dengan haskell 98 dengan menggunakan general purpose programming language Pada tahun 2010 muncul lah standar Haskell 2010
Haskell menggunakan paradigma functional, modular, dan lazy/non-strict. Jangan salah, Haskell juga mendukung paradigma imperative namun dengan "perlakuan" khusus. Haskell dikembangkan bersama-sama. Tapi, tokoh yang paling terkenal adalah Simon Peyton Jones selaku lead developer dari Glasgow Haskell Compiler (GHC).
B. PENGERTIAN HASKELL
Haskell adalah bahasa pemrograman yang sepenuhnya functional. Dalam bahasa imperatif anda menyelesaikan sesuatu dengan memberitahu komputer urutan tugas yang akan dilakukan dan kemudian menjalankannya. Saat mengeksekusinya, itu dapat mengubah state.
Dalam pemrograman murni fungsional, anda tidak memberitahu komputer apa yang harus dilakukan. Jadi dalam bahasa murni fungsional, fungsi tidak memiliki efek samping. Satu-satunya fungsi yang dapat dilakukan adalah menghitung sesuatu dan mengembalikannya sebagai hasilnya. Pada awalnya, ini sepertinya membatasi tetapi sebenarnya memiliki beberapa konsekuensi yang sangat bagus jika suatu fungsi dipanggil dua kali dengan parameter yang sama, itu dijamin untuk mengembalikan hasil yang sama.
C. BENTUK HASKELL
1. Fungsional
Tidak ada pengertian tepat dan baku untuk istilah “fungsional”. Tapi ketika kita mengatakan bahwa Haskell adalah bahasa pemrograman fungsional, kita biasanya mengingat dua hal ini, yaitu Fungsi-nya first-class, yakni fungsi adalah nilai yang bisa digunakan layaknya nilai-nilai yang lain. Program Haskell lebih bermakna mengevaluasi ekspresi ketimbang mengeksekusi instruksi. Perpaduan keduanya menghasilkan cara berpikir tentang pemrograman yang sepenuhnya berbeda. Kebanyakan waktu kita di semester ini akan dihabiskan mengeksplorasi cara berpikir ini.
2. Pure
Ekspresi di Haskell selalu referentially transparent, yakni Tanpa mutasi! Semuanya (variable, struktur data…) immutable. Ekspresi tidak memiliki “efek samping” (seperti memperbarui variabel global atau mencetak ke layar). Memanggil fungsi yang sama dengan argumen yang sama selalu menghasilkan output yang sama setiap waktu.
Hal ini mungkin terdengar gila. Bagaimana mungkin bisa mengerjakan sesuatu tanpa mutasi dan efek samping? Tentunya ini memerlukan perubahan cara berpikir (jika kalian terbiasa dengan paradigma pemrograman berbasis objek). Tapi setelah kalian bisa berubah.
3. Lazy
Di Haskell, ekspresi tidak akan dievaluasi sampai hasilnya benar-benar dibutuhkan. Hal ini adalah keputusan sederhana dengan konsekuensi yang merambat kemana-mana, yang akan kita eksplorasi sepanjang semester ini. Beberapa konsekuensinya antara lain:
a. Mendefinisikan control structure baru lewat pendefinisian fungsi menjadi mudah.
b. Memungkinkan definisi dan pengerjaan dengan struktur data tak hingga.
c. Mengakibatkan model pemrograman yang lebih komposisional.
Salah satu akibat negatif utamanya adalah analisa terhadap penggunaan ruang dan waktu menjadi lebih rumit.
4. CONTOH HASKELL
a. Struktur Haskell
main = ...
b. Inline-comment
main = do
-- Ini inline-comment
...
c. Block-comment
main = do
{-
Ini block-comment
-}
...
d. Mencetak sesuatu ke luar
main = putStrLn "Halo, Haskell!"
5. KELEBIHAN HASKELL
a. Sintaks yang jelas dan intuitif terinspirasi oleh notasi matematika.
b. Daftarkan pemahaman untuk membuat daftar berdasarkan daftar yang ada.
c. Ekspresi Lambda: membuat fungsi tanpa memberi mereka nama eksplisit. Jadi lebih mudah untuk menangani formula besar.
d. Haskell sepenuhnya transparan referensial. Kode apa pun yang menggunakan I/O harus ditandai seperti itu. Dengan cara ini, ini mendorong Anda untuk memisahkan kode dengan efek samping (mis. Menempatkan teks di layar) dari kode tanpa (perhitungan).
KESIMPULAN
Haskell adalah bahasa pemrograman yang lazy dan fungsional. kenapa haskell? karena elegan, lebih sedikit bug, interaksi antara program dengan dunia luar sangat ketat, peforma cukup baik, dan masih banyak lagi. Jadi intinya tergantung kita yang menggunakannya.
PENULIS : RIVO DIANRA (Mahasiswa Prodi Sistem Informasi Kelas 1E FST UIN Sulthan Thaha Saifuddin Jambi)
SUMBER : https://haskell.web.id
Posting Komentar