Atribuição de variável global / local de LISP
Se definirmos uma função algo como
(defun foo(x)
(setf x somevalue))
Éx
definido como uma variável local ou global? Usando setf / q está definindo o valor para ser global. se é global alguém pode me dizer como definir uma variável local em lisp diferentelet
?
Obrigado!
Considere o seguinte exemplo
(let ((x 0))
(defun foo (y)
(when (equal x 0) (setq x y))
(when (< x y) (setq x y))
x))
quando eu estou dando alguma entrada parafoo
gostar(foo 2)
, ele está retornando 2 e se nós executarmos a função novamente com(foo 1)
ainda retorna 2 e(foo 3)
retorna 3.Isso é o que eu realmente quero fazer.Mas a questão é como isso é possível, porque se eu tentar acessar a variávelx
fora da função do terminal clisp, eu sou incapaz de. Se eu estou acessando a função novamente, parece manter o valor anterior dex
.
obrigado!