Lisp Macros

  • DEFVAR: define uma variável global e inicializa (para alguma valor ou nil). Por convenção, o nome de variáveis globais fica entre asteriscos:
    • (defvar *nome* nil)
  • DOLIST: faz um loop por todos os elementos de uma lista, fazendo um binding de cada elemento a uma variável
    • (dolist (variavel lista))
  • LOOP: executa um corpo de expressões repetidas vezes até que ocorra um return
    • loop compound-form* => result*
  • OR: avalia uma série de expressões, uma por vez, da esquerda para a direita, e retorna o primeiro valor não nulo (ou nil, se todas forem nil).
    • or form* => results*
  • PUSH: adiciona itens à alguma estrutura de dados. Retorna o novo valor da estrutura de dados que está sendo modificada.
  • RETURN: retorna um valor e/ou sai de um bloco.
    • return [result] =>|
  • SETF: é o principal operador de alocação em Lisp, fazendo com que seu primeiro argumento seja o resultado de avaliar o segundo argumento:
    • setf {pair::= place newvalue}* => result*
  • WITH-OPEN-FILE: cria um strem para um arquivo
    • with-open-file (stream filespec options) declaration form*
  • WITH-STANDARD-IO-SYNTAX: garante que variáveis que afetam o comportamento de read/print estajem com os valores padronizados
    • with-standard-io-syntax form* => result*