Apa ini ? kenapa bawah2 hukum segala!
Dengan adanya hukum maka sesuatu menjadi ketat, "teratur" secara paksa, dan tunduk sebagaimana seorang warga negara yang berada pada sebuah sistem. Meskipun, pada dasarnya manusia adalah makhluk yang "bebas" dan dikarunia "kebebasan" untuk menjadi apa dan untuk apa.
Kembali ke Topik utama, yakni tentang "Functional Programming" atau pemrograman fungsional. Membahas topik ini, menurut penulis begitu banyak hal yang bisa dibahas, sehingga sulit untuk berhenti untuk membahasnya (seperti prinsip Evilfactorylabs, belajar itu bukan destinasi atau tujuan tetapi sebuah perjalanan mulia yang tak pernah berhenti). Pada tulisan ini, membahas salah satu dan bagian kecil dari konsep, teori, dan hukum yang ada pada pemrograman fungsional. Yakni, Hukum Asosiatif atau the law of associativity.
Sebelum membahas soal Asosiatif, kita harus mempelajari dulu tentang "compose", dalam
Asosiatif berasal dari matematika (tenang! jangan takut dengan matematika, selama ada kemauan, disitu ada jalan). Asosiatif,
Dalam matematika, sifat asosiatif[1] adalah sifat dari beberapa operasi biner, yang berarti bahwa mengatur ulang tanda kurung dalam ekspresi yang tidak mengubah hasilnya. Dalam logika proposisional, asosiativitas adalah valid kaidah penggantian untuk ekspresi dalam bukti logika.
Contohnya,
(2 + 3) + 4 = 2 + (3 + 4) = 9
Dari contoh diatas, ada 2 hal yang berbeda tetapi sama, yang berbeda adalah urutan operasi (lihat buka dan tutup kurungnya), yang sama adalah hasilnya meskipun urutan (buka dan tutup kurungnya) berbeda.
Namun, contoh diatas dibuat dalam bentuk operasi Matematika, bagaimana jika kita membuatnya menjadi fungsi dalam pemrograman, berikut contohnya (yah, ditulis pakai JavaScript biar terlihat trendi dan menaikkan strata sosial).
let compose = (f, g) => x => f(g(x))
let add = (a, b) => a + b
let addTwo = b => add(2, b)
let addFour = b => add(4, b)
let assocX = compose(addTwo, addFour)
let assocY = compose(addFour, addTwo)
// identifikasi bahwa {assocX} dan {assocY}
// ketika diberi nilai {3}
// maka menghasilkan hal yang sama atau {true}
assocX(3) === assocY(3)
// 9 === 9
// contoh lain
let exclaim = str => `${str} !`
let toLowerCase = str => str.toLowerCase()
let assocA = compose(toLowerCase, exclaim)
let assocB = compose(exclaim, toLowerCase)
assocA("HEY") === assocB("HEY")
// "hey !" === "hey !"
Contoh diatas, terdapat sebuah fungsi yang bernama {compose}
, fungsi tersebut untuk menyusun operasi atau peng-aplikasi-an dari beberapa fungsi yang dimana memiliki parameter yang sama (Nanti, kita bahas lebih detail untuk Compose).
Kesimpulan
Tidak susah sebenarnya, untuk memahami apa itu Asosiatif, intinya Asosiatif digunakan untuk mengetahui hasil akhir dari beberapa fungsi yang dioperasikan selalu sama, Meskipun urutan dari fungsinya berbeda. Namun, ada beberapa hal yang sangat penting tetapi tidak dimuat dalam tulisan kali ini, Hal tersebut yakni Pure-Function (fungsi tanpa efek samping, atau selalu menghasilkan hal yang sama), Hal tersebut sangat penting sebelum kamu membaca tulisan ini atau sedang mempelajari lebih lanjut paradigma pemrograman fungsional. Jika kamu sangat tertarik, kamu bisa Kesini...
Top comments (10)
Sampe pusing gue mikirin kode ini:
kenapa hasilnya bisa sama dan jawabannya ternyata ditulisan selanjutnya yang bakal ngebahas tentang
compose
. btw sicompose
ini tentang higher-order function bukan si?compose itu konsep dari
composite of function
dan higher-order-function itu implemetasi, cara kita implement si konsep kedalam programming.Nah, karena itu implementasi kedalam bahasa maka tanpa high-order-function kita bisa melakukan, misalnya pakai metode curry-function (yah pakai bahasa yang support curry-function). INtinya high-order-f adalah salah satu cara saja. yang paling penting konsepnya.
I see. mau meyakinkan, jadi HoF ini adalah bagian dari composite of function, benar?
Kalau bicara tentang bagian, menurutku "TIDAK". karena ku masih melihat 2 hal ini berbeda antara
composite of function
danhigh order function
.Meskipun dalam contoh tulisan ini, memakai
HoF
yah.@faultable kini giliran kamu yang bikin aku pusing,
composite of function
vshigh order function
.Mirip seperti ini gak pak
1 + 1 = 2
dan3 - 1 = 2
?Selama hasil akhir sama maka dia bersifat asosiatif, jika tidak yah tidak pak. sangat sederhana bukan :P
Mantuls pak,.... 🏄♀️
ada reaction buat ngegambarin pengen ninju ga
Ini gan