LISP lokale/Globale variable Zuordnung

Wenn wir eine Funktion definieren, die so etwas wie

(defun foo(x)
  (setf x somevalue))

Ist x definiert als eine lokale variable oder global??? mit setf/q ist der Wert global sein.
wenn es global ist, kann mir jemand sagen, wie definieren Sie eine lokale variable in lisp andere als let?

Dank!

Betrachten Sie das folgende Beispiel

(let ((x 0)) 
  (defun foo (y) 
    (when (equal x 0) (setq x y)) 
    (when (< x y) (setq x y))
    x))

wenn ich gebe ein wenig input zu foo wie (foo 2) es ist wieder 2 und wenn wir führen Sie die Funktion erneut mit (foo 1) es noch gibt 2 zurück, und (foo 3) 3 gibt.Dies ist, was ich wirklich wollen, es zu tun.Aber die Frage ist, wie ist dies möglich, weil, wenn ich versuche, auf die variable x außerhalb der Funktion aus der clisp-terminal, ich bin nicht in der Lage.Wenn ich Zugriff auf die Funktion erneut, es scheint, behalten den bisherigen Wert von x.

danke!

InformationsquelleAutor Sid | 2012-09-08
Schreibe einen Kommentar