Елісп реімплементація


12

Emacs реалізує інтерпретатор для elisp в C, який служить фактичною реалізацією посилань. Чи є інші реалізації elisp іншими мовами (зокрема, Javascript)? Що таке мінімальний набір примітивів, необхідний для повного перевтілення елісп? Які основні труднощі при цьому (наприклад, динамічне оцінювання)?


Хорошим початковим моментом було б: en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Хоча схема і elisp мають свої відмінності, я думаю, що вище - це гарний початок для розуміння необхідних фундаментальних речей.
Ренан Ранеллі

Відповіді:


5

Guile Emacs - це реалізація Emacs, де нещодавно оригінальний інтерпретатор Emacs Lisp був замінений libguile. Існують проблеми інтероперації (наприклад, у Guile та Emacs є різні уявлення про рядки), але вже можна використовувати існуючий код Emacs Lisp (хоча з досить залякаючими регресіями продуктивності).

З іншого боку , є nicferrier «s Ejit . Його README описує пов'язані з цим труднощі, такі як певні речі, що створюють лише контекст у Emacs, і те, як вибирається мінімальний набір примітивів перед компіляцією Emacs Lisp в Javascript. Тому насправді це не реалізація, але може допомогти відповісти на ваші останні запитання.


Лише зауваження: Ejit збирається в JS, він не записаний у JS.
Малабарба

Так, цей параграф був призначений як відповідь на питання, що таке мінімальний набір примітивів, оскільки намір полягає в тому, щоб визнати та спростити їх якомога більше, перш ніж збиратись у JS. Описані також деякі труднощі (наприклад, буфери та їх властивості, що мають менший сенс).
wasamasa

2
Я думаю, ти хочеш вказати на саму Гіле. Проект Guile Emacs, хоча це є значним випадком використання, є більше побічним сюжетом.
філс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.