Fungsional - Lambda
Pendahuluan
Istilah Lambda banyak digunakan di istilah Software Engineering.
Misalnya saja :
- Java 8 Lambda function.
- JUnit Lambda project, yang nantinya menjadi cikal bakal JUnit 5.
- AWS Lambda function.
- Phyton Lambda function.
- LaMDA, productnya Google seperti ChatGPT. Ups, kayaknya bukan ya.. maaf..maaf.
Lambda
Lambda yang kita maksud dalam artikel ini sebenarnya mengacu ke istilah Functional Programming.
Lambda yang kita maksud mempunyai banyak nama, yaitu :
- Anoymous functions
- Function Literal
- Lambda expression
- Lambda abstraction
- Function block
Sebenarnya istilah lain berupa nama product seperti JUnit Lambda project, AWS Lambda function sebenarnya punya konsep yang hampir sama.
Walaupun di beberapa penggunaannya sebenarnya sudah melipir ke konsep-konsep yang agak berbeda.
Tapi tetap dalam koridor yang sama.
Jadi yang kita maksudkan sebagai Lambda adalah Anonymous Function , atau fungsi yang tidak perlu pakai nama atau identitas.
Hal ini yang biasanya kita dapatkan di banyak bahasa pemrograman, seperti Java, Phyton, dll.
Sedangkan untuk unit library dan fitur, seperti AWS Lambda, atau JUnit Lambda, dll, sebenarnya mencoba meminjam konsep asli dari Lambda ini untuk menamakan produk mereka.
Dan konsep Lambda ini sebenarnya berasal dari konsep Matematika, yaitu Lambda Calculus.
Lambda Calculus
Apa lagi ini ?
Iya, Lambda Calculus merupakan dasar teori dari Lambda Function
Lambda Calculus ini merupakan salah satu model matematika untuk kasus komputasi dengan pendekatan fungsional.
Model komputasi lain yang dilakukan dengan pendekatan fungsional, misalnya :
- Combinatory Logic
- General Recursive Function
- dll
Pada era yang sama, kita juga bisa melihat ada model matematika untuk kasus komputasi dengan pendekatan sequential seperti :
- Turing Machine.
- Finite State Machine.
- Register Machine.
- dll
Lambda Calculus diperkenalkan oleh Dr. Alonzo Church di tahun 1930.
Di era dimana masalah komputasi baru saja dicoba dicari formulasi nya yang tepat secara matematika.
Dr. Alonzo Church ini pula lah yang menjadi advisor dari Alan Mathison Turing yang kita kenal membuat Turing Machine di tahun 1936.
Secara konsep maka Lambda Calculus ini adalah formula matematika untuk menyederhanakan sebuah fungsi complex menjadi fungsi dengan hanya 1 argument saja.
Tekniknya dengan membungkus sebuah fungsi sebagai inputan bagi parameter fungsi yang lain.
Teknik ini disebut dengan Currying.
Yang ujung-ujungnya tetap akan ditranslate ke sebuah fungsi yang hanya mempunyai satu argument saja.
Dan proses ini dilakukan tanpa melakukan penamaan terhadap fungsi tersebut atau disebut anonymous function.
Kalau ada yang pernah memrogram dengan LISP, maka misalnya code di LISP sbb :
(write ((lambda (x y z)
(+ x (* y z))
10 3 5)
)
maka hasilnya adalah :
25
Kalau kita lihat di program diatas, maka proses Currying dilakukan untuk mendapatkan hasil dari fungsi di dalamnya.
Didalamnya kita juga bisa lihat bahwa ada 2 fungsi terpisah :
- Fungsi y * z , misalnya hasilnya adalah result1.
- Fungsi x + result1, dan hasilnya adalah 25 kalau kita isikan nilainya masing-masing.
Kedua fungsi dapat dipakai tanpa memakai identifier atau nama fungsi.
Inilah yang disebut sebagai lambda function.
Itu…
Lanjut ke part selanjutnya