Cara Membuat Function Pada Haskell Dan Pengenalan If Statement

davidasync
5 min readNov 29, 2017

--

Cara Membuat Function Pada Haskell Dan Pengenalan If Statement — Artikel ini diharap membuat para pembaca setidaknya dapat membuat function pada haskell, setidaknya function sederhana.

Pada artikel sebelumnya, kita sudah merasakan bagaimana cara menggunakan function pada haskell. Namun, function tersebut adalah function yang sudah disediakan oleh haskell, seperti max, min, succ, dan div.

Baca juga: Pengenalan Function Pada Haskell Dan Perbedaannya Dengan Imperative Language

Membuat Function Pada Haskell Untuk Pertama Kali

Cara Membuat Function Pada Haskell Dan Pengenalan If Statement

Pada artikel kali ini untuk memulai membuat function pada haskell, saya akan menggunakan vscode sebagai text editor (kalian dapat menggunakan text editor kesayangan anda). Jika anda tertarik untuk mencoba vscode, anda dapat mendownloadnya di Download Visual Studio Code.

Buatlah file dengan extension .hs, dan isi file tersebut dengan,

-- firstFunction.hs kaliDuaSaya x = x + x

Cara membuat function pada haskell, sama persis dengan cara kita menggunakannya. Nama function diikuti oleh parameternya yang dipisahkan oleh spasi.

Namun ketika kita membuat suatu function pada haskell, terdapat tambahan = yang mendefinisikan bagaimana function tersebut lakukan.

Simpan file ini dengan nama firstFunction.hs atau apapun dengan extension .hs. Buka ghci pada directory file firstFunction.hs disimpan lalu lakukan :l firstFunction.hs.

:l berguna untuk load file .hs yang kita buat tadi, setelah file tersebut di load kita dapat bermain dengan function yang kita buat.

GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help Prelude> :set prompt "ghci> " ghci> :l firstFunction.hs [1 of 1] Compiling Main ( firstFunction.hs, interpreted ) Ok, modules loaded: Main. ghci> kaliDuaSaya 12 24 ghci> kaliDuaSaya 3.14 6.28 ghci>

Karena + bekerja pada integer dan juga float, function yang kita buat akan bekerja pada semua jenis angka. Mari kita, buat function kita menerima 2 parameter. Dengan menambahkan baris baru,

-- firstFunction.hs kaliDuaSaya x = x + x kaliDuaKita x y = x*2 + y*2

Kita juga dapat mengubah function kaliDuaKita dengan mendefinisikannya menjadi kaliDuaKita x y = x + x + y + y . Setelah merubah kode tersebut jangan lupa untuk menyimpannya dan menjalankan kembali :l firstFunction.hs pada ghci.

ghci> :l firstFunction.hs [1 of 1] Compiling Main ( firstFunction.hs, interpreted ) Ok, modules loaded: Main. ghci> kaliDuaKita 3 6 18 ghci> kaliDuaKita 1.2 4.6 11.6 ghci>

Reuse Function Yang Sudah didefinisikan

Jika anda menyadarinya, sebenarnya kita dapat menggunakan function kaliDuaSaya pada kaliDuaKita karena function tersebut sebenarnya melakukan operasi yang sama dengan function kaliDuaSaya dan menjumlahkannya.

-- firstFunction.hs kaliDuaSaya x = x + x kaliDuaKita x y = kaliDuaSaya x + kaliDuaSaya y

Simpan dan load kembali filenya :l firstFunction.hs pada ghci

ghci> :l firstFunction.hs [1 of 1] Compiling Main ( firstFunction.hs, interpreted ) Ok, modules loaded: Main. ghci> kaliDuaKita 3 6 18 ghci> kaliDuaKita 1.2 4.6 11.6 ghci>

Hal ini adalah contoh sederhana yang akan anda temui dalam membuat program dengan haskell. Membuat suatu function sederhana dan membangun function yang lebih kompleks dengan menggabungkan function — function yang sederhana. Dan menghindari pengulangan kode.

Contoh sederhana, bagaimana jika suatu hari suatu dunia membuat aturan baru yang menganggap 2 itu adalah 3 dan anda harus mengubah kode program yang tadi kita buat ?

Kita hanya cukup mendefinisikan ulang function kaliDuaSaya menjadi kaliDuaSaya x = x + x dan karena kaliDuaKita menggunakan function kaliDuaSaya kita tidak perlu mengubah apapun pada function tersebut. Cara ini menyelesaikan masalah 2 adalah 3 😀

-- firstFunction.hs kaliDuaSaya x = x + x + x kaliDuaKita x y = kaliDuaSaya x + kaliDuaSaya y

Function pada haskell tidak bergantung pada urutan mendefinisikan function tersebut. Anda dapat mendefinisikan kaliDuaKita sebelum mendefinisikan kaliDuaSaya dan function kaliDuaKita tetap bekerja dengan baik.

-- firstFunction.hs kaliDuaKita x y = kaliDuaSaya x + kaliDuaSaya y kaliDuaSaya x = x + x + x

Penerapan If Statement Pada Function Haskell

If Statement — Cara Membuat Function Pada Haskell Dan Pengenalan If Statement

Selanjutnya kita akan mencoba untuk membuat function yang akan mengkalikan parameter yang di berikan dengan 2 tapi hal tersebut akan terjadi jika parameter tersebut kurang dari sama dengan 100.

-- firstFunction.hs kaliDuaKita x y = kaliDuaSaya x + kaliDuaSaya y kaliDuaSaya x = x + x + x kaliDuaJika x = if x > 100 then x else x*2

Dan inilah if statement pada haskell. Mungkin anda sudah familiar if statement pada bahasa imperative lain.

Perbedaan If statement pada haskell dan bahasa imperative lainnya adalah pada bagian else. Else pada haskell adalah bagian yang harus diisi.

Pada bahasa imperative, kita bisa mengosongkan else pada if statement. Namun, else pada if statement haskell adalah WAJIB. Setiap function atau expression harus mengembalikan nilai.

Sebenarnya, kita dapat membuat if statement menjadi 1 baris saja menjadi,

kaliDuaJika x = if x > 100 then x else x*2

Namun dengan menulis kode menjadi beberapa line, kode kita menjadi lebih mudah dibaca dan dimengerti maksudnya.

ghci> :l firstFunction.hs [1 of 1] Compiling Main ( firstFunction.hs, interpreted ) Ok, modules loaded: Main. ghci> kaliDuaJika 123 123 ghci> kaliDuaJika 99 198 ghci>

Apa itu expression ?

Expression — Cara Membuat Function Pada Haskell Dan Pengenalan If Statement

Perlu anda ketahui, if statement pada haskell adalah expression! Expression adalah potong kode yang dipastikan akan mengembalikan nilai.

Contohnya

  1. 3.14 adalah sebuah expression karena mengembalikan nilai 3.14,
  2. 4 + 8 juga adalah expression karena akan mengembalikan nilai 12,
  3. x + y juga adalah expression karena mengembalikan nilai x + y.

Karena else pada if statement adalah WAJIB, if statement pada haskell dipastikan akan mengembalikan nilai dan karena hal itulah if statement pada haskell adalah sebuah expression. Hal ini adalah salah satu bagian yang paling saya suka dari haskell.

Apostrophe

apostrophe, by jimmiehomeschoolmom on Flickr (CC-a licensed)

Selanjutnya kita akan membuat function yang mirip dengan kaliDuaJika. Namun akan +1 untuk nilai apapun yang dikembalikan.

-- firstFunction.hs kaliDuaKita x y = kaliDuaSaya x + kaliDuaSaya y kaliDuaSaya x = x + x + x kaliDuaJika x = if x > 100 then x else x*2 kaliDuaJika' x = (if x > 100 then x else x*2) + 1

Jika anda perhatikan function yang baru terdapat tanda apostrophe ` pada akhir nama function. Apostrophe tidak memiliki arti sama sekali pada haskell dan apostrophe adalah karakter yang valid untuk dijadikan nama function.

ghci> :l firstFunction.hs [1 of 1] Compiling Main ( firstFunction.hs, interpreted ) Ok, modules loaded: Main. ghci> kaliDuaJika' 10 21 ghci> 1000 1000 ghci>

Biasanya kita menggunakan apostrophe untuk menandai bahwa function tersebut adalah function yang strict (function yang tidak lazy) atau function yang dimodifikasi atau variable yang dimodifikasi. Karena apostrophe adalah character yang valid maka kita dapat membuat sebuah function seperti ini.

-- firstFunction.hs kaliDuaKita x y = kaliDuaSaya x + kaliDuaSaya y kaliDuaSaya x = x + x + x kaliDuaJika x = if x > 100 then x else x*2 kaliDuaJika' x = (if x > 100 then x else x*2) + 1 hari'Jum'at = "Ini adalah hari Jum'at"

Terdapat beberapa hal yang perlu di perhatikan,

  1. Nama function pada haskell tidak dapat dimulai dengan huruf besar (anda dapat mencobanya sendiri :p).
  2. Function tersebut tidak memiliki parameter, function ini dapat disebut sebagai definition. Karena kita tidak dapat mengubah nama function setelah mendefinisikannya.
ghci> :l firstFunction.hs [1 of 1] Compiling Main ( firstFunction.hs, interpreted ) Ok, modules loaded: Main. ghci> hari'Jum'at "Ini adalah hari Jum'at"

Sekian tutorial tentang Cara Membuat Function Pada Haskell Dan Pengenalan If Statement. JIka anda menyukai artikel ini like, share, and subscribe!

Good software, like wine, takes, time. ~ Joel Spolsky

Referensi:

Originally published at nginy.net on November 29, 2017.

--

--

davidasync
davidasync

Written by davidasync

The Joy of discovery is one of the best things about being a software developer ~ Eric Elliott

No responses yet