evilfactorylabs

loading...
Cover image for Hukum Asosiatif

Hukum Asosiatif

RiN
Interest in Topic Meta-programming, Developer Tooling, Dad Jokes, φ+losophy & (DX) Developer Experience
・2 min read

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.

Associative, found in pinterest

Contohnya,

(2 + 3) + 4 = 2 + (3 + 4) = 9
Enter fullscreen mode Exit fullscreen mode

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 !"
Enter fullscreen mode Exit fullscreen mode

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...

Discussion (10)

Collapse
faultable profile image
Rizaldy

Sampe pusing gue mikirin kode ini:

let assocA = compose(toLowerCase, exclaim)
let assocB = compose(exclaim, toLowerCase)
Enter fullscreen mode Exit fullscreen mode

kenapa hasilnya bisa sama dan jawabannya ternyata ditulisan selanjutnya yang bakal ngebahas tentang compose. btw si compose ini tentang higher-order function bukan si?

Collapse
ri7nz profile image
RiN Author

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.

Collapse
faultable profile image
Rizaldy

I see. mau meyakinkan, jadi HoF ini adalah bagian dari composite of function, benar?

Thread Thread
ri7nz profile image
RiN Author

Kalau bicara tentang bagian, menurutku "TIDAK". karena ku masih melihat 2 hal ini berbeda antara composite of function dan high order function.

Meskipun dalam contoh tulisan ini, memakai HoF yah.

Thread Thread
ri7nz profile image
RiN Author

@faultable kini giliran kamu yang bikin aku pusing, composite of function vs high order function.

OverThinking

Collapse
adiatma profile image
Adiatma Kamarudin • Edited

Mirip seperti ini gak pak 1 + 1 = 2 dan 3 - 1 = 2 ?

Collapse
ri7nz profile image
RiN Author • Edited

Selama hasil akhir sama maka dia bersifat asosiatif, jika tidak yah tidak pak. sangat sederhana bukan :P

Collapse
adiatma profile image
Adiatma Kamarudin

Mantuls pak,.... 🏄‍♀️

Collapse
faultable profile image
Rizaldy

ada reaction buat ngegambarin pengen ninju ga

Collapse
ri7nz profile image
RiN Author

Ini gan Tinju