#### 7.2.31 defun

`(defun NOME (ARG1 ...) [DOCSTRING] EXPR1 ...)`
  Define uma chamada expressão lambda, isto é: define NOME para avaliar para a expressão lambda `(lambda (ARG1 ...) (EXPR1 ...))` quando chamada como uma função. Também, instala DOCSTRING como resposta para os comandos `(help NOME)` e `(morehelp NOME)`. Note que DOCSTRING não precisa conter a sinopse do comando, essa sinopse é gerada automaticamente. EXPR1 não pode ser uma sequência de caracteres se `DOCSTRING` for omitida; EXPR1 deve ser interpretada como a sequência de caracteres documento. O valor de retorno da `(defun ...)` é o nome da função. Funções podem ser recursivas e podem modificar a si mesmas. é posível redefinir funções internas, nesse caso a definição antiga está ainda disponível so o nome `-builtin-OLDNAME-`. Valores de argumento podem ser alterados por `setq`; a nova associação é descartada após avaliação de surrounding`defun`-body. As palavras especiais `&optional` e `&rest` possuem o mesmo significado que a expressão lambda anonymous, veja nas referência adiante. See `(lambda ...)`. See `(setq ...)`. See `(let ...)`.