LISP - Variáveis
No LISP, cada variável é representada por um symbol. O nome da variável é o nome do símbolo e é armazenado na célula de armazenamento do símbolo.
Variáveis globais
As variáveis globais têm valores permanentes em todo o sistema LISP e permanecem em vigor até que um novo valor seja especificado.
Variáveis globais são geralmente declaradas usando o defvar construir.
Por exemplo
(defvar x 234)
(write x)
Ao clicar no botão Executar ou digitar Ctrl + E, o LISP o executa imediatamente e o resultado retornado é
234
Uma vez que não há declaração de tipo para variáveis no LISP, você especifica diretamente um valor para um símbolo com o setq construir.
Por exemplo
->(setq x 10)
A expressão acima atribui o valor 10 à variável x. Você pode se referir à variável usando o próprio símbolo como uma expressão.
o symbol-value A função permite que você extraia o valor armazenado no local de armazenamento do símbolo.
Por exemplo
Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.
(setq x 10)
(setq y 20)
(format t "x = ~2d y = ~2d ~%" x y)
(setq x 100)
(setq y 200)
(format t "x = ~2d y = ~2d" x y)
Ao clicar no botão Executar ou digitar Ctrl + E, o LISP o executa imediatamente e o resultado retornado é.
x = 10 y = 20
x = 100 y = 200
Variáveis Locais
Variáveis locais são definidas dentro de um determinado procedimento. Os parâmetros nomeados como argumentos em uma definição de função também são variáveis locais. As variáveis locais são acessíveis apenas dentro da respectiva função.
Como as variáveis globais, as variáveis locais também podem ser criadas usando o setq construir.
Existem duas outras construções - let e prog para criar variáveis locais.
A construção let tem a seguinte sintaxe.
(let ((var1 val1) (var2 val2).. (varn valn))<s-expressions>)
Onde var1, var2, ..varn são nomes de variáveis e val1, val2, .. valn são os valores iniciais atribuídos às respectivas variáveis.
Quando leté executado, cada variável recebe o respectivo valor e, por último, a expressão s é avaliada. O valor da última expressão avaliada é retornado.
Se você não incluir um valor inicial para uma variável, ele é atribuído a nil.
Exemplo
Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.
(let ((x 'a) (y 'b)(z 'c))
(format t "x = ~a y = ~a z = ~a" x y z))
Ao clicar no botão Executar ou digitar Ctrl + E, o LISP o executa imediatamente e o resultado retornado é.
x = A y = B z = C
o prog construção também tem a lista de variáveis locais como seu primeiro argumento, que é seguido pelo corpo do prog, e qualquer número de expressões-s.
o prog função executa a lista de s-expressões em sequência e retorna nil a menos que encontre uma chamada de função chamada return. Então o argumento do return função é avaliada e retornada.
Exemplo
Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.
(prog ((x '(a b c))(y '(1 2 3))(z '(p q 10)))
(format t "x = ~a y = ~a z = ~a" x y z))
Ao clicar no botão Executar ou digitar Ctrl + E, o LISP o executa imediatamente e o resultado retornado é.
x = (A B C) y = (1 2 3) z = (P Q 10)