Pengenalan Function Pada Haskell Dan Perbedaannya Dengan Imperative Language
Pengenalan Function Pada Haskell Dan Perbedaannya Dengan Imperative Language — Artikel ini diharapkan membuat anda lebih memahami dan mengenal tentang function pada haskell purely functional programming language.
Artikel ini berisi pengenalan function pada haskell dan perbedaannya dengan imperative language
Pada artikel sebelumnya, sudah dibahas tentang Memahami Dasar Matematika Haskell Purely Functional Programming Language. Jika anda mengikuti artikel tersebut, mungkin anda tidak menyadari bahwa anda sudah menggunakan function. Contohnya *
adalah sebuah function yang membutuhkan 2 parameter berupa angka, lalu akan mengembalikan hasil kali 2 parameter tersebut.
Baca juga: Memahami Dasar Matematika Haskell Purely Functional Programming Language
Function yang digunakan dengan cara disisipkan di tengah parameter dapat kita sebut sandwiching atau hal ini juga dapat disebut infix function. Function yang didefinisikan oleh programmer biasanya adalah prefix function.
Perbedaan Penulisan Function Pada Haskell dan Imperative Language
Javascript
Pada bahasa pemrograman imperative, function didefinisikan dengan menuliskan nama function diikuti dengan parameternya yang dipisahkan dengan koma di dalam parentheses.
Contoh dalam javascript,
function tambah (angka1, angka2) { var hasil = angka1 + angka2 return hasil; }
Pada haskell, function didefinisikan dengan menuliskan nama function, spasi, dan diikuti parameternya yang dipisahkan dengan spasi.
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help Prelude> :set prompt "ghci> " ghci> succ 10 11 ghci> succ 12 13
succ adalah function yang mengembalikan successor dari parameter yang di input (untuk sekarang anda dapat mengasumsikan succ adalah parameter +1
untuk angka). Dapat dilihat nama function dan parameter hanya dipisahkan oleh spasi.
Menggunakan function dengan parameter lebih dari 1 juga dipisahkan dengan spasi.
ghci> min 9 10 9 ghci> min 3.13 3.14 3.13 ghci> max 3.21 4 4.0
Min adalah function yang mengembalikan nilai terkecil dari parameter yang di input. Max adalah function yang mengembalikan nilai terbesar dari parameter yang di input.
Penerapan function pada operasi matematika memiliki precedence paling tinggi dari semuanya. Jika anda perhatikan penggunakan 2 function dibawah adalah equivalent.
ghci> (succ 3.14) + (max 7 3) * 3 25.14 ghci> succ 3.14 + max 7 3 * 3 25.14
Namun, jika anda menginginkan hasil max dari 7 dan 3 * 3 anda tidak dapat melakukan max 7 3 * 3
, karena max 7 3
akan lebih dulu dikalkulasi dan akan dikalikan dengan 3
. Jika anda ingin terlebih dahulu melakukan kalkulasi pada 3 * 3 anda dapat melakukan max 7 (3 * 3)
.
ghci> max 7 3 * 3 21 ghci> max 7 (3 * 3) 9
Jika suatu function membutuhkan 2 parameter, kita dapat menggunakannya sebagai infix function. Sebagai contoh div, adalah function yang menerima 2 parameter berupa angka dan akan membagi kedua angka tersebut. div 90 10
akan menghasilkan 9.
Namun, jika kita menggunakan function div sebagai prefix function, terkadang kita akan mengalami kebingungan karena kita tidak tahu angka mana yang menjadi pembagi dan angka mana yang akan dibagi.
Kita dapat melakukan 90 `div` 10
sehingga function lebih mudah dibaca dan dimengerti.
ghci> div 90 10 9 ghci> 90 `div` 10 9
Kesalahan Umum Pemahaman Function pada Haskell dan Imperative Language
imperative language
Banyak orang yang berasal dari imperative language cenderung berpegang pada anggapan bahwa parentheses menunjukkan penggunaan function.
Contohnya pada javascript, untuk menggunakan function kita melakukan foo ()
, bar (1)
, atau baz ('phi', 7)
.
Seperti yang kita bicarakan sebelumnya penggunaan function pada haskell dipisahkan dengan spasi. Jadi pada haskell, function tersebut dapat digunakan dengan cara foo
, bar 1
, dan baz 'phi' 7
.
Jika anda melihat function bar (bar 3.14)
, ini tidak berarti function bar digunakan dengan parameter bar dan 3. Namun hal ini berarti bahwa function bar 3.14 digunakan pertama kali lalu hasilnya akan digunakan kembali sebagai parameter bar yang paling luar.
Jika kita menuliskannya dalam javascript bar ( bar (3.14))
Sekian artikel tentang pengenalan function pada haskell purely functional programming language. Jika anda menyukai artikel ini like, share, dan subscribe!
First, solve the problem. Then, write the code ~ John Johnson
Referensi:
Originally published at nginy.net on November 25, 2017.