Ich bin neu zu lisp und schreibe ein paar einfache Programme, um damit vertrauter zu werden. Eines der Dinge, die ich mache, ist das Schreiben einer rekursiven und iterativen Version einer faktoriellen Methode. Ich bin jedoch auf ein Problem gestoßen und kann es anscheinend nicht lösen.Lisp Warnung: xx ist weder deklariert noch gebunden, es wird behandelt, als ob es SPEZIAL erklärt wurde
sah ich einen ähnlichen Fehler bei Lisp: CHAR is neither declared nor bound aber eine Lösung nicht wirklich erreicht wurde, anders als die OP erkannte, dass er einen „Tippfehler“ gemacht. In der REPL kann ich die setf-Funktion verwenden und es funktioniert gut. Ich benutze auch LispBox mit Emacs. Ich würde mich über Vorschläge freuen!
(defun it-fact(num)
(setf result 1)
(dotimes (i num)
(setf result (* result (+ i 1)))
)
)
WARNUNG in IT-FACT: RESULT weder deklariert noch gebunden, wird sie behandelt werden, als ob es SPECIAL deklariert wurden.
Siehe http://www.cs.cmu.edu/Groups/AI /html/faqs/lang/lisp/part1/faq-doc-4.html, besonders das "GUT:" Beispiel. Die Leute hier sind in beiden Fällen ziemlich freundlich, aber Ihr Code ist leichter zu lesen, wenn er mehr wie typischer Lisp-Code eingerückt ist. Prost! – Alec