Wie ist mein LISP-Funktion eine ungebundene variable?
Definiere ich eine Funktion in LISP, und es bestimmt richtig. Aber immer wenn ich versuche zu nennen, bekomme ich die Fehlermeldung "Die variable FACTORIAL ungebunden ist."
Ich habe versucht, diese auf OS X und Windows 7, auf LispWorks und Allegro. Die Funktion ist -
(defun factorial (x)
(if (= 1 x) 1
(* x factorial (- 1 x))))
Jede Hilfe ist willkommen.
kann man den code, wo Sie es nennen?
InformationsquelleAutor sterling | 2010-08-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Dritten Zeile von deinem code, du bist Multiplikation
x
malfactorial
mal1-x
.Das erste, was zu beachten ist
factorial
ist nicht eine variable: es ist eine Funktion. Common-Lisp ist ein Lisp-2, factorial ist nicht gebunden, wie eine variable auf all–es ist gebunden wie eine Funktion.Müssen Sie den Aufruf der
factorial
- Funktion auf einer weniger alsx
, nichtx
weniger als einer.Also:
...sollte es tun.
InformationsquelleAutor
Sieht es aus wie Sie fehlt ein Satz Klammern:
Ohne die
()
umfactorial
, Lisp glaubt, man bezieht sich auf eine variable statt einer Funktion.(- 1 x)
auch. Obwohl ich nicht weiß, CL, also könnte ich Total aus!Hodes: ich sah, dass auch, aber ich dachte, ich würde es lassen, als eine übung für die OP. 🙂
InformationsquelleAutor
Zur Vervollständigung der Antwort von @Isaac Hodes, diese zeigen Ihnen, dass es ganz klar 2 namspace für die Funktion und die Variablen in der CL. Sie hätte nicht den gleichen Fehler, wenn Sie wurden in das Schema. Lesen Sie mehr hier.
Ja, der ist Weg, sagte ich, "Sie hätte nicht den gleichen Fehler"
InformationsquelleAutor
Sie zu binden, müssen alle Variablen und Funktionsaufrufe, die Sie verwenden möchten, mit Klammern, es sei denn, Sie wollen, dass Sie Symbole. Über die ungebundenen Fehler, Paul Graham hat ein gutes Beispiel in seinem Buch: Ansi Common Lisp
InformationsquelleAutor