1. Tiga Pilar Functional Programming
**Functional Programming (FP)** adalah paradigma pemrograman yang memperlakukan komputasi sebagai evaluasi fungsi matematika murni dan menghindari perubahan status (*state mutation*) serta efek samping (*side effects*).
2. Currying & Function Composition
**Currying** adalah teknik mengubah fungsi yang menerima $N$ argumen menjadi rantai fungsi yang masing-masing menerima 1 argumen. Hal ini memudahkan pembuatan fungsi modular yang dapat digabungkan (*composed*).
example.js
javascript
| 1 | // 1. Currying Example |
| 2 | const multiply = a => b => a * b; |
| 3 | const double = multiply(2); |
| 4 | console.log(double(5)); // 10 |
| 5 | |
| 6 | // 2. Composition (Pipe): Menjalankan data dari kiri ke kanan |
| 7 | const pipe = (...fns) => initialVal => |
| 8 | fns.reduce((val, fn) => fn(val), initialVal); |
| 9 | |
| 10 | const trim = str => str.trim(); |
| 11 | const toUpper = str => str.toUpperCase(); |
| 12 | const exclaim = str => `${str}!`; |
| 13 | |
| 14 | const formatShout = pipe(trim, toUpper, exclaim); |
| 15 | console.log(formatShout(' halo developer ')); // "HALO DEVELOPER!" |