evilfactorylabs

Cover image for Pengantar Kalkulus Lambda
Leda the Weeb
Leda the Weeb

Posted on

Pengantar Kalkulus Lambda

Kalkulus Lambda adalah model komputasi yang berlandaskan prinsip fungsi M-chan (Matematika-chan), pertama kali di kemukakan oleh Alonzo Church pada awal 1930-an yang menjadi bagian penelitian beliau dalam pembuktian formal dasar matematika.

What da hell is Model Komputasi ?

Model komputasi merupakan kerangka kerja yang menjelaskan apa yang dilakukan sebuah fungsi / algoritme dalam menghasilkan nilai keluaran dari sebuah nilai masukan.

Ketika kita menerima nilai masukan 4, Bagaimana kita menghasilkan 6 ?

let y = (x) => x + 2

y(4)
Enter fullscreen mode Exit fullscreen mode

atau juga

let y = (x) => x + (x/2)

y(4)
Enter fullscreen mode Exit fullscreen mode

Fenomena banyak cara untuk memenuhi syarat nilai masukan dan keluaran ini disebut dengan undecidability.

Bagaimana bentuknya dalam kalkulus lambda ?

λx.(+ x 2) 4 = (+ 4 2) = 6
Enter fullscreen mode Exit fullscreen mode

Penulisan notasi dengan operator pada awal operasi disebut notasi prefiks.

Notasi tersebut sama saja dengan

λx.(x + 2) 4 = (4 + 2) = 6
Enter fullscreen mode Exit fullscreen mode

Kalkulus Lambda

Kalkulus lambda salah satu model komputasi fungsional, fungsional berarti komputasi disusun oleh set dan fungsi matematika.

Kalkulus Lambda memiliki 3 ekspresi:

E := x 
  | E1.E2
  | λx.E1
Enter fullscreen mode Exit fullscreen mode
  • x , Variable
  • E1.E2 , Aplikasi Fungsi
  • λx.E1 , Abstraksi Fungsi

Rupa kode dalam bentuk tipe data.

type rec e = 
  | Variabel(int)
  | Aplikasi(e,e) 
  | Abstraksi(int,e)
Enter fullscreen mode Exit fullscreen mode

Variabel

Variable adalah nilai bilangan, seperti 1,2,3 dan seterusnya.

Abstraksi Fungsi

Abstraksi fungsi adalah cara kita membuat suatu fungsi.

λ(parameter).(badan fungsi)

λx.E1
Enter fullscreen mode Exit fullscreen mode
  • λx, notasi melambangkan bagaimana kita membuat sebuah fungsi dengan parameter x.

  • E1, eksprsi dari kalkulus lambda

Contoh

λx. (+ (* x 2) x)

λy. (- y 2)
Enter fullscreen mode Exit fullscreen mode

Dalam bentuk kode

let f1 = (x) => (x * 2) + x

let f2 = (y) => y - 2
Enter fullscreen mode Exit fullscreen mode

Aplikasi Fungsi

Aplikasi fungsi bagaimana kita menggunakan fungsi terhadap sesuatu nilai masuka atau ekspresi.

λx. (+ (* x 2) x) 4 
= (+ (* 4 2) 4)
= ( + 8 4 )
= 12
Enter fullscreen mode Exit fullscreen mode
  • Fungsi λx. (+ (* x 2) x) diberikan masukan 4.

  • Parameter x dan variabel x pada badan fungsi di ganti dengan 4 dan λx dihapus karena x sudah terganti, sehingga menghasilkan (+ (* 4 2) 4).

  • Kita operasikan dari kurung terdalam yaitu (* 4 2) menjadi ( + 8 4 ) dan dilanjutkan sehingga menghasilkan 12.

Rupa dalam bentuk kode

let f = (x) => (x * 2) + x

f(4) // 12
Enter fullscreen mode Exit fullscreen mode

Contoh

λa.(* a a) . λx.(+ x 3) . 4
Enter fullscreen mode Exit fullscreen mode

Kita punya sebuah fungsi berparameter a dengan isi (* a a) dan diaplikasikan dengan (+ x 3) dan 4 ?

λa. (* a a) (+ x 3) 4
= (* (λx.(+ x 3)) (λx.(+ x 3)) 4
= (* (+ 4 3) (+ 4 3))
= (* 7 7)
= 49
Enter fullscreen mode Exit fullscreen mode

Bila ditulis dalam bentuk kode

let fa = (a) => (a * a)

let fx = (x) => x + 3

fa(fx(4)) // 49
Enter fullscreen mode Exit fullscreen mode

Penutup

Sekian dari tulisan ini semoga cukup memanaskan kepala and. Apabila penjelasan saya kurang dapat di mengerti, semoga video dibawah ini bisa membantu

#1 Pengantar | Kalkulus Lambda, Idiosemantik

Terima kasih.

Discussion (1)

Collapse
fncolon profile image
fnc

Wah jadi lebih paham kalkulus lambda karena artikel ini, thanks engelstrassen dan M-chan!