Memulai Belajar Haskell

Wisnu Adi Nurcahyo 10 Januari 2017

Memulai Belajar Haskell

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.

Well, sebenarnya ada banyak buku Haskell yang bisa dibaca secara online dengan bebas (free). Tapi, di sini kita akan coba pendekatan yang lain.

Biasanya, kita akan dikenalkan dulu apa itu functional programming, type system, dan sebagainya. Nantinya, itu semua akan diselipkan di dalam materi sedikit-demi-sedikit agar tidak "sakit kepala". Tujuan lainnya supaya kita bisa merasakan perbedaan Haskell dengan bahasa pemrograman yang lain.

Sebelum memulai materi, kita bisa menggunakan Try Haskell untuk belajar. Atau, kita bisa gunakan online IDE seperti IDEOne. Saran saya, gunakan IDEOne untuk belajar karena environment interpreter (Try Haskell) dan environment compiler (seperti IDEOne) sangat berbeda.

Di tulisan ini, kita akan mulai dengan bagian-bagian yang mudah. Oh, iya! Haskell menggunakan camel-case di dalam kodenya (contoh putStrLn).

Struktur Haskell

Sama halnya dengan bahasa C, Haskell membutuhkan main function sebagai identifier dimulainya program.

main = ...

Atau, kita bisa menggunakan do-block seperti berikut.

main = do ...

Jika di dalam main function ada lebih dari satu sintaks, sebaiknya gunakan do-block agar lebih mudah dibaca (readable code). Untuk cara membuat function akan dikenalkan di tulisan yang lain.

Comment di Haskell

Inline-comment

main = do -- Ini inline-comment ...

Untuk menggunakan inline-comment, kita bisa menggunakan --. Lalu, sebagai informasi, apabila kita ingin memberitahu keluaran suatu kode di dalam comment bisa menggunakan -- >.

main = do print (1 + 2) -- > 3

-- > memberitahu kepada sesama Haskeller (pengguna Haskell) bahwa keluaran dari print di atas adalah 3.

Block-comment

main = do {- Ini block-comment -} ...

Kita bisa menggunakan {- dan -} di sebuah comment yang membutuhkan tempat lebih dari satu baris.

Mencetak Sesuatu ke Luar

Sekarang, kita coba cetak sebuah kalimat "Halo, Haskell!". Kita bisa menggunakan putStrLn.

main = putStrLn "Halo, Haskell!"

Atau

main = do putStrLn "Halo, Haskell!"

putStrLn sama saja dengan echo "Halo, Haskell!\n" di PHP. Berarti, ada putStr, kan? Benar! Bedanya, putStrLn mencetak \n (baris baru) sementara putStr tidak.

Lalu, di atas kan ada print. Apa bedanya? print mencetak sebuah data di Haskell dengan mengubahnya menjadi string. Jadi, kalau kita pakai print "Halo, Haskell!", maka keluarannya adalah "Halo, Haskell". Kalau pakai putStrLn "Halo, Haskell!" keluarannya Halo, Haskell!.

Catatan: Jangan coba-coba mencetak apapun selain string menggunakan putStrLn atau putStr. Karena nanti compiler akan berkata error.

Well, Haskell itu bahasa pemrograman static typing. Jadi, kalau tipe datanya tidak sesuai akan terjadi error.

Tips: Gunakan fungsi show untuk mengubah bilangan menjadi string. Contoh, show 98 akan menjadi "98" (string).

Menggabungkan Dua Buah String

Ini biasa dikenal sebagai concatenate. Haskell menggunakan ++ untuk melakukan penggabungan (dalam kasus ini string).

main = do putStrLn ("Halo, " ++ "Haskell!")

Nah, kenapa harus pakai tanda kurung? Karena, jika tidak, compiler akan menganggap kode di atas seperti ini (putStrLn "Halo, ") ++ "Haskell!" sehingga akan menyebabkan error. Sebagai alternatif tanda kurung, kita bisa pakai dollar sign $.

main = do putStrLn $ "Halo, " ++ "Haskell!"

Sederhananya, anggap saja $ membuat "Halo, " ++ "Haskell!" menjadi ("Halo, " ++ "Haskell!").

Nah, sekarang kita bisa menggabungkan sebuah angka.

main = do
    putStrLn $ "Tahun: " ++ show 2017
    -- atau agar lebih enak dibaca:
    putStrLn $ "Tahun: " ++ (show 2017)

Bermain dengan Interpreter Haskell

Sekarang kita coba bermain di Try Haskell. Kalau tadi kita butuh main function, di interpreter kita tidak membutuhkannya.

> putStrLn "Halo, Haskell!"
Halo, Haskell!
:: IO ()

:: IO () itu apa? Untuk saat ini, sebaiknya bagian ini diabaikan dahulu karena nanti ada pembahasannya secara khusus di tulisan yang lain.

Kita bisa memanfaatkan Try Haskell untuk bereksperimen. Sebaiknya, gunakan interpreter ini untuk mencoba operasi matematika di Haskell.

Operasi yang ada seperti biasa, yaitu +, -, *, dan /. Sebagai tambahan, Haskell mendukung ^ untuk notasi pangkat.

Untuk mod, Haskell tidak menggunakan %. Contohnya bisa dilihat di bawah.

> mod 5 2
1
:: Integral a => a
> 5 `mod` 2
1
:: Integral a => a
> div 5 2
2
:: Integral a => a
> 5 `div` 2
2
:: Integral a => a

div sama halnya dengan mod.

Ya, itu tadi beberapa sintaks Haskell. Untuk saat ini, dicoba dahulu beberapa sintaks di atas. Kemudian, bisa pakai tutorial Try Haskell untuk mengenal lebih banyak sintaksnya. Kita akan berjumpa lagi di lain waktu. Happy coding!