Asignación de variables locales / globales LISP
Si definimos una función algo como
(defun foo(x)
(setf x somevalue))
Esx
¿Definido como una variable local o global? usando setf / q está configurando el valor para que sea global. si es global, ¿alguien puede decirme cómo definir una variable local en lisp que no sealet
?
¡Gracias!
Considera el siguiente ejemplo
(let ((x 0))
(defun foo (y)
(when (equal x 0) (setq x y))
(when (< x y) (setq x y))
x))
cuando estoy dando alguna entrada afoo
me gusta(foo 2)
, está devolviendo 2 y si volvemos a ejecutar la función con(foo 1)
todavía devuelve 2 y(foo 3)
devuelve 3. Esto es lo que realmente quiero que haga. Pero la pregunta es cómo es posible, porque si intento acceder a la variablex
fuera de la función desde el terminal de Clisp, no puedo. Si vuelvo a acceder a la función, parece que conserva el valor anterior dex
.
¡gracias!