Saya belum membaca ini di mana pun, tapi ini adalah bagaimana saya percaya dapat diturunkan:Y
Mari kita memiliki fungsi rekursif , mungkin faktorial atau yang lainnya. Secara informal, kami mendefinisikan sebagai istilah pseudo-lambda di mana muncul dalam definisi sendiri:fff
f=…f…f…
Pertama, kami menyadari bahwa panggilan rekursif dapat difaktorkan sebagai parameter:
f=(λr.(…r…r…))Mf
Sekarang kita bisa mendefinisikan jika kita hanya punya cara bagaimana menyampaikannya sebagai argumen untuk dirinya sendiri. Ini tidak mungkin, tentu saja, karena kita tidak punya di tangan. Apa yang kita miliki di tangan adalah . Karena berisi semua yang perlu kita definisikan , kita dapat mencoba meneruskan sebagai argumen alih-alih dan mencoba merekonstruksi darinya nanti di dalam. Upaya pertama kami terlihat seperti ini:ffMMfMff
f=(λr.(…r…r…))M(λr.(…r…r…))M
Namun, ini tidak sepenuhnya benar. Sebelum, mendapat menggantikan dalam . Tapi sekarang kita melewati sebagai gantinya. Kita harus entah bagaimana memperbaiki semua tempat di mana kita menggunakan sehingga mereka merekonstruksi dari . Sebenarnya, ini tidak sulit sama sekali: Sekarang kita tahu bahwa , di mana-mana kita menggunakan kita cukup menggantinya dengan .frMMrfMf=MMr(rr)
f=(λr.(…(rr)…(rr)…))M′(λr.(…(rr)…(rr)…))M′
Solusi ini bagus, tapi kami harus mengubah di dalamnya. Ini sangat tidak nyaman. Kita dapat melakukan ini dengan lebih elegan tanpa harus memodifikasi dengan memperkenalkan yang mengirim ke argumennya berlaku untuk dirinya sendiri: Dengan menyatakan sebagai kita dapatkanMMλMM′λx.M(xx)
f=(λx.(λr.(…r…r…))M(xx))(λx.(λr.(…r…r…))M(xx))
Dengan cara ini, ketika diganti untuk , diganti untuk , yang menurut definisi sama dengan . Ini memberi kita definisi non-rekursif dari , yang dinyatakan sebagai istilah lambda yang valid!MxMMrff
Transisi ke sekarang mudah. Kita dapat mengambil istilah lambda sewenang-wenang alih-alih dan melakukan prosedur ini. Jadi kita dapat faktor dan mendefinisikanYMM
Y=λm.(λx.m(xx))(λx.m(xx))
Memang, berkurang menjadi seperti yang kita mendefinisikannya.YMf
Catatan: Saya telah menurunkan seperti yang didefinisikan dalam literatur. Combinator yang telah dijelaskan adalah varian dari untuk panggilan-by-nilai bahasa, kadang-kadang juga disebut . Lihat artikel Wikipedia ini .YYZ