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)