Элисп реимплементации

12

Emacs реализует интерпретатор для elisp в C, который фактически является эталонной реализацией. Существуют ли другие реализации elisp на других языках (особенно на Javascript)? Какой минимальный набор примитивов необходим для полного переопределения elisp? Каковы основные трудности при этом (например, динамическое определение объема)?

Пол Миллер
источник
Хорошей отправной точкой будет: 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. Поэтому это не совсем повторная реализация, но может помочь ответить на ваши последние вопросы.

wasamasa
источник
Просто примечание: Ejit компилируется в JS, это не написано в JS.
Малабарба
Да, этот абзац был задуман как ответ на вопрос о том, каков минимальный набор примитивов, поскольку цель состоит в том, чтобы как можно лучше распознать и упростить их перед компиляцией в JS. Также описаны некоторые трудности (например, буферы и их свойства, имеющие меньше смысла).
Васамаса
2
Я думаю, что вы хотите указывать на саму Guile. Проект Guile Emacs, хотя и является значительным примером использования, является здесь скорее второстепенным примечанием.
Фил