Pengenalan Function Pada Haskell Dan Perbedaannya Dengan Imperative Language

0
315
views
Pengenalan Function Pada Haskell Dan Perbedaannya Dengan Imperative Language
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 - Pengenalan Function Pada Haskell Dan Perbedaannya Dengan 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 - Pengenalan Function Pada Haskell Dan Perbedaannya Dengan 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: