Implementasi Elisp

12

Emacs mengimplementasikan juru bahasa untuk elisp di C yang berfungsi sebagai implementasi referensi de facto . Apakah ada implementasi elisp lain dalam bahasa lain (khususnya Javascript)? Apa satu set primitif minimal yang diperlukan untuk sepenuhnya mengimplementasikan elisp? Apa kesulitan mendasar dalam melakukannya (mis. Pelingkupan dinamis)?

Paul Miller
sumber
Titik awal yang baik adalah: en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Meskipun skema dan elisp memiliki perbedaan, saya pikir hal di atas adalah awal yang baik untuk memahami hal-hal mendasar yang dibutuhkan.
Renan Ranelli

Jawaban:

5

Guile Emacs adalah implementasi Emacs di mana juru bahasa asli Emacs Lisp digantikan oleh libguile baru-baru ini. Masih ada masalah interoperasi (Guile dan Emacs memiliki ide yang berbeda tentang string misalnya), tetapi kode Emacs Lisp yang ada sudah dapat digunakan (meskipun dengan regresi kinerja yang agak mengintimidasi).

Atau, ada nicferrier 's Ejit . README-nya menggambarkan kesulitan yang terlibat, seperti hal-hal tertentu yang hanya membuat konteks di Emacs dan bagaimana sekumpulan primitif dipilih sebelum mengkompilasi Emacs Lisp ke Javascript. Karena itu, ini bukan implementasi ulang, tetapi dapat membantu menjawab pertanyaan Anda yang terakhir.

wasamasa
sumber
Hanya sebuah catatan: Ejit mengkompilasi ke JS, itu tidak ditulis dalam JS.
Malabarba
Ya, paragraf itu dimaksudkan sebagai jawaban atas pertanyaan apa set primitif minimal karena tujuannya adalah untuk mengenali dan menyederhanakan sebanyak mungkin sebelum mengkompilasi ke JS. Beberapa kesulitan (seperti, buffer dan propertinya kurang masuk akal) juga dijelaskan.
wasamasa
2
Saya pikir Anda ingin menunjuk ke Guile sendiri. Proyek Guile Emacs, sementara kasus penggunaan yang signifikan, lebih dari catatan di sini.
phils