Ich lese kürzlich SICP, um Lisp-Programmierung zu lernen.
Das Buch enthält ein Beispiel für die Erstellung einer Funktionssumme auf hoher Ebene ( siehe unten).
(define (sum term a next b)
...
(term a)
...
(next a)
...
In dieser Funktion sind term und next Funktionen.
Ich möchte die gleiche Funktion in elisp wie folgt schreiben.
(defun sum (term a next b)
....
(funcall term a)
...
(func next a)
....
Dann definiere ich einige Testfunktionen, um die Summe zu testen
(defun inc-test (x) (+ x 1))
sum inc-test 1 inc-test 10
aber es zeigt Fehler wie diesen: Ungültige Funktion: inc-test
Kann mir jemand anrufen, wie ich das Problem beheben kann, da ich neu bei elisp bin? sehr schätzen
inc-test
in Ihrem letzten Beispiel eine Variable verwendet wird, diese jedoch nicht als Variable definiert ist (es handelt sich um eine Funktion). Sie müssen entweder ein Symbol oder eine Funktionsreferenz an übergeben funcall
. Daher besteht eine Möglichkeit, Ihren Code zu reparieren, darin, ihn 'inc-test
anstelle von inc-test
(beachten Sie das Zitat) zu übergeben.
sum
?