Reimplementacje Elisp


12

Emacs implementuje interpreter dla elisp w C, który służy jako de facto implementacja referencyjna. Czy są jakieś inne implementacje elisp w innych językach (szczególnie Javascript)? Jaki jest minimalny zestaw prymitywów niezbędnych do pełnego ponownego wdrożenia elisp? Jakie są w tym podstawowe trudności (np. Dynamiczne określanie zakresu)?


Dobrym punktem wyjścia byłoby: en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Chociaż schemat i elisp mają swoje różnice, myślę, że powyższe jest dobrym początkiem do zrozumienia podstawowych potrzebnych rzeczy.
Renan Ranelli

Odpowiedzi:


5

Guile Emacs to implementacja Emacsa, w której oryginalny interpreter Emacs Lisp został niedawno zastąpiony przez libguile. Nadal występują problemy ze współpracą (na przykład Guile i Emacs mają różne poglądy na temat ciągów znaków), ale istniejący kod Emacs Lisp może już zostać użyty (choć z zastraszającymi regresjami wydajności).

Alternatywnie istnieje nicferrier „s Ejit . W pliku README opisano trudności, takie jak niektóre elementy tworzące kontekst tylko w Emacsie oraz sposób wyboru minimalnego zestawu prymitywów przed skompilowaniem Emacsa Lisp do Javascript. Dlatego nie jest to tak naprawdę ponowna realizacja, ale może pomóc w udzieleniu odpowiedzi na ostatnie pytania.


Tylko uwaga: Ejit kompiluje się w JS, nie jest napisany w JS.
Malabarba

Tak, ten akapit miał być odpowiedzią na pytanie, jaki jest minimalny zestaw prymitywów, ponieważ intencją jest rozpoznanie i uproszczenie ich w jak największym stopniu przed skompilowaniem do JS. Opisano także niektóre trudności (jak bufory i ich właściwości mające mniej sensu).
wasamasa,

2
Myślę, że chcesz wskazać na samą Guile. Projekt Guile Emacs, chociaż jest znaczącym przypadkiem użycia, jest tutaj raczej dodatkiem.
phils
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.