Pontos importantes:
O modo de trabalho: ler uma expressão, avaliar essa expressão de acorco com as regras da Lisp e, por fim, imprimir um resultado. Esse é o Read-Eval-Print Loop (REPL). Atenção: o REPL lê expressões, não lê linhas.
As expressões podem avaliar para alguma coisa diferente ou ser self-evaluating, ou seja, avaliam para elas mesmas. Importante: toda expressão em Lisp avalia para alguma coisa ou para NIL (falso e/ou nulo).
Qualquer coisa entre parênteses é uma lista. Em geral Lisp avalia as listas da seguinte forma:
- O primeiro elemento é o nome de uma função
- Os demais elementos são expressões a serem avaliadas
A definição de uma função avalia para (retorna) o nome da função, e o efeito colateral é a definição/criação da nova função. A sintaxe geral é:
(defun <nome> (<argumentos>) (<corpo>))
(defun ola-mundo () (format t "olá, mundo"))
Importante: as funções retornam automaticamente o valor da última expressão que foi avaliada.
Funções Lisp aprendidas:
;; Funções para imprimir um output
(format t "olá, mundo")
(write-line "olá, mundo")
(print "olá, mundo")
;; Função para compilar um arquivo
(compile-file "arquivo.lisp")
;; Função para carregar um arquivo
(load "arquivo.lisp")
(load "arquivo.fasl")
Atalhos SLIME aprendidos:
, <vírgula>
Vai para a linha de comando
cd, pwd Na linha de comando, comandos comuns para
navegação em diretórios
C-c C-c slime-compile-defun
Envia a definição para o Lisp para ser avaliada
C-c C-l slime-load-file
Pergunta o arquivo a carregar, tendo como padrão
o buffer atual
C-c C-k slime-compile-and-load-file
Compila e carrega o arquivo no buffer atual
M-x quit Sai do buffer Lisp e encerra o REPL
M-x sayoonara (idem)
M-x slime Invoca/inicia um novo buffer Lisp