Jadi ada suatu algoritma untuk mengubah istilah kalkulus lambda ke logika kombinatorik menggunakan kombinator SK. Ini menghasilkan hal-hal yang meledak dalam ukuran. Saya ingin tahu lebih banyak tentang ledakan ini. Saya sepertinya tidak bisa memikirkan algoritma yang lebih baik. Saya telah mendengar tentang bahasa fungsional yang secara praktis dikompilasi ke kombinator sehingga tampaknya algoritma yang lebih baik harus ada. Saya mencari makalah David Turner tentang topik ini dan dia pada dasarnya hanya mengatakan untuk menerapkan beberapa optimasi dan itu menyebabkan "peningkatan yang cukup besar".
Apakah "peningkatan yang berarti" berarti bahwa ukurannya turun menjadi hanya peningkatan polinomial? Apakah ada cara yang dikenal untuk mengubah istilah lambda menjadi logika kombinasatori dengan hanya peningkatan ukuran polinomial (atau kurang?)? Jika algoritma semacam itu ada, apakah praktis?
Jawaban:
bukan ahli dalam hal ini tetapi di sini ada dua makalah sejarah yang tampaknya sangat relevan dengan pertanyaan dan mungkin merupakan bidang penelitian semi aktif. Turner mengusulkan seperangkat kombinator yang dapat direduksi menjadi kombinator SK. makalah berikut ini berpendapat bahwa kombinator Turner bahkan tidak berkurang menjadi kombinator SK menyebabkan ledakan eksponensial (dan mungkin pengurangan akan ke persyaratan SK bahkan lebih besar). tapi kemudian makalah ke-2 mengatakan ada algoritma ruang O (n log n) yang efisien berdasarkan pada kombinator Turner. (Tampaknya mungkin bahwa klaim telah dibuat tentang efisiensi polinomial yang dianggap tidak sepenuhnya ditunjukkan / tidak terbukti & karena itu dianggap sebagai dugaan ...
Apa yang dimaksud dengan Implementasi Efisien kalkulus λ? / Frandsen, Sturtivant (1991) (lihat hal.18)
Terjemahan Turner Combinators di O (n log n) space / Noshita (1985)
sumber