Apostila de LISP
O seu nome vem de LISt Processing (a lista é a estrutura de dados fundamental desta linguagem). Tanto os dados como o programa são representados como listas, o que permite que a linguagem manipule o código fonte como qualquer outro tipo de dados.
Exercício 3
Converta as seguintes expressões da notação infixa da aritmética para a notação prefixa do Lisp:
a) 1+2-3
>(- (+ 1 2) 3)
b) 1-2*3
>(- 1 (* 2 3))
c) 1*2-3
>(- (* 1 2) 3)
d) 1*2*3
>(* 1 2 3)
e) (1-2)*3
>*3(- 1 2)
f) (1-2)+3
>+3(- 1 2)
g) 1-(2+3)
(+ 2 3)-1
h) 2*2+3*3*3
+(* 2 2) (* 3(* 3 3))
Exercício 4
Converta as seguintes expressões da notação prefixa do Lisp para a notação infixa da aritmética:
a) (*(/ 1 2) 3)
(1/2)*3
b) (* 1 (- 2 3))
c) (/ (+ 1 2) 3)
d) (/ (/ 1 2) 3)
e) (/ 1 (/ 2 3))
f) (-(- 1 2) 3)
g) (- 1 2 3)
Exercicio 5
a) (*(/ 1 2)3)
b) (* 1 (- 2 3))
c) (/ (+ 1 2) 3)
d) (/ (/ 1 2) 3)
e) n(/ 1 (/ 2 3))
f) (-(- 1 2) 3)
g) (- 1 2 3)
h) (- 1)
Definição de funções em Lisp
Para se definirem novas funções em Lisp, é necessário criar uma combinação de quatro elementos.
O primeiro elemento desta combinação é a palavra defun, que informa o avaliador que estamos a definir uma função. O nome