In Emacs Lisp wird die lexikalische Umgebung durch einen Alist repräsentiert, der Symbole auf ihren Wert abbildet. Es kann als zweites Argument der 'eval'-Funktion an Evaluatoren übergeben werden.Wie lexikalische Bindungen von Funktionen an 'eval' in Emacs Lisp übergeben?
(eval '(+ 3 var)
'((var . 4)))
→ 7
Allerdings kann ich nicht herausfinden, wie Funktionen übergeben, nicht Variablen, den Bewerter.
Zum Beispiel zeigt einer der folgenden Ausdrücke einen Fehler an.
(eval '(func 3)
'((func . (lambda (x) (+ 4 x)))))
→ error: (void-function func)
(eval '(func 3)
'((func . (closure (t) (x) (+ 4 x)))))
→ error: (void-function func)
Jede Hilfe wird geschätzt.
Emacs Lisp ist ein [Lisp-2] (https://en.wikipedia.org/wiki/LISP_2), kein [Lisp-1] (https://en.wikipedia.org/wiki/LISP_1)). – Drew