Saya memiliki apa yang saya sebut pertanyaan filosofis tentang λ-calculus.
Ketika Anda menjelajahi λ-calculus, Anda akan terkejut melihat semua hal yang dapat Anda lakukan di sana. Anda dapat mendefinisikan bilangan bulat, operasi aritmatika, boolean, pernyataan if-then-else, loop, fungsi rekursif, dll. Saya percaya ini telah terbukti komputasional lengkap.
Tetapi di sisi lain, jika Anda mempertimbangkan apa yang dapat Anda lakukan dengan fungsi dalam λ-calculus, Anda menyadari bahwa satu-satunya hal yang dapat Anda lakukan adalah memberi makan fungsi dan mengembalikan fungsi lainnya. Dan proses itu tidak pernah berakhir.
Jadi, bagaimana Anda mengekstraksi hasil dari perhitungan?
Misalkan hasil dari ekspresi adalah fungsi f
. Anda ingin memeriksa apakah f
yang Anda harapkan. Anda dapat mengujinya, mengambil fungsi yang Anda tahu, menerapkannya f
dan menerima g
. Tetapi untuk memeriksa g
sudah benar, Anda sekarang perlu memverifikasi apa yang g
dilakukannya. Dan Anda memulai dari awal. Jadi bagaimana Anda bisa tahu tentang itu f
?
Sepertinya saya bahwa Anda dapat mengganti semua fungsi dalam λ-calculus dengan fungsi tunggal, fungsi identitas I = λx.x
, dan semuanya masih berfungsi seperti yang dijelaskan dalam λ-calculus. Angka Gereja 3
ketika diberikan f
dan x
kembali f(f(f(x)))
. Tetapi karena f
dan x
hanya bisa I
, itu kembali I
. I
diterapkan I
dan I
juga kembali I
. Jadi I
memenuhi definisi 3
. "Booleans" (λxy.x)
dan (λxy.y)
membutuhkan 2 argumen, yang akan I
dan I
kedua boolean akan kembali I
. Masing-masing setara dengan identitas, meskipun mereka berperilaku sesuai dengan definisi mereka.
Jadi bagaimana Anda membuat perbedaan? Bagaimana Anda menunjukkan bahwa λ-calculus berhubungan dengan lebih dari sekedar fungsi tunggal?
Apakah ada konsep identitas? Bisakah Anda mengidentifikasi suatu fungsi segera tanpa mengevaluasinya? Saya percaya terbukti bahwa tidak ada cara untuk menguji 2 fungsi untuk kesetaraan.
Atau apakah λ-kalkulus bukan tentang fungsi, tetapi tentang deskripsi formal tentang apa yang mereka lakukan? Itu berarti bahwa ekspresi λ tidak hanya menentukan apa fungsi yang dilakukan tetapi juga data yang dimanipulasi fungsi tersebut. Jadi ketika Anda menulis A B
, Anda tidak berlaku A
untuk B
, tetapi Anda menerapkan fungsi yang dijelaskan oleh string A
ke definisi formal dari fungsi yang terkandung dalam B
mengembalikan definisi formal lain.
Apa yang sebenarnya terjadi di kalkulus λ? Apa objek matematika yang berhubungan dengannya?
Mengikuti:
OK, dari jawaban di bawah ini tampak bahwa λ-calculus tidak begitu banyak tentang fungsi dalam arti matematika, tetapi tentang subset fungsi yang dapat dinyatakan sebagai ekspresi λ. Atau bahkan lebih banyak tentang manipulasi ekspresi λ.