Lisp

Disponível somente no TrabalhosFeitos
  • Páginas : 35 (8732 palavras )
  • Download(s) : 0
  • Publicado : 26 de setembro de 2012
Ler documento completo
Amostra do texto
MC336 - Paradigmas de programação
Lisp

João Meidanis

c Copyright 2011 J. Meidanis

Conteúdo
1 Introdução

4

1.1

Calculando derivadas simbólicas . . . . . . . . . . . . . . . . .

5

1.2

O psiquiatra . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

1.3

MYCIN

6

1.4

Interpretador

..............................
...........................

2Elementos da linguagem

7

11

2.1

Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

2.2

Números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

2.3

Símbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2.4

Pares-com-ponto

.........................

12

2.5

Representação gráca . . . . . . . . . .. . . . . . . . . . . . .

13

2.6

Car, cdr e cons

..........................

15

2.7

Coleta de lixo . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

3 Estrutura da linguagem

17

1

3.1

Denindo funções . . . . . . . . . . . . . . . . . . . . . . . . .

17

3.2

Condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

3.3Variáveis locais

20

..........................

4 Símbolos

22

4.1

Avaliação e valores de um símbolo . . . . . . . . . . . . . . . .

22

4.2

Atribuindo valores a símbolos

..................

23

4.3

Inibindo a avaliação . . . . . . . . . . . . . . . . . . . . . . . .

24

5 Recursão

26

5.1

O método do quadradão

.....................

26

5.2Recursão e laços . . . . . . . . . . . . . . . . . . . . . . . . . .

29

6 Aritmética

31

6.1

Funções básicas . . . . . . . . . . . . . . . . . . . . . . . . . .

31

6.2

Funções mais sosticadas . . . . . . . . . . . . . . . . . . . . .

33

7 Denição de funções

34

8 Condicionais

36

8.1

A forma especial

8.2

A macro

8.3

IF........................

36

...........................

37

Predicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

COND

9 Funções para listas

39
2

10 Funções para conjuntos

44

11 Pacotes (módulos)

47

11.1 Acessando símbolos de outros pacotes . . . . . . . . . . . . . .

47

11.1.1 Importação e exportação . . . . . . . . . . . . . . . . .

48

11.2Pacotes pré-denidos . . . . . . . . . . . . . . . . . . . . . . .

48

11.3 Denindo pacotes . . . . . . . . . . . . . . . . . . . . . . . . .

49

12 Arrays e Loops

50

12.1 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.1.1 Criando arrays

......................

12.1.2 Acessando arrays
12.2 Loops

50
50

.....................

50...............................

51

3

Capítulo 1
Introdução
LISP vem de list processing.
John McCarthy criou LISP em 1960 [1].

Hoje em dia ele trabalha com

sustentabilidade da vida humana na Terra.
LISP é uma linguagem tão antiga que na época em que foi criada os computadores SÓ USAVAM LETRAS MAIÚSCULAS. Quando vieram as letras
minúsculas, foi adotada a convenção de que em LISP uma letraminúscula
ou maiúscula é a mesma coisa. Portanto, as palavras 'SEN', 'sen' e 'SeN' em
LISP são todas equivalentes.
O padrão Common Lisp, consolidado em 1990, veio unir os vários dialetos
de LISP existentes na época para formar uma linguagem bastante bem especicada. Usaremos o livro

Common Lisp: The Language,

2a. edição, de

Guy Steele, onde este padrão é detalhado com grande cuidado, comoreferência principal sobre LISP neste curso [3]. Site na internet (um de vários):

http://www.supelec.fr/docs/cltl/cltl2.html
Algumas aplicações famosas escritas em LISP seguem.

4

1.1 Calculando derivadas simbólicas
Início da computação simbólica: programa que achava a derivada de uma
função, mas usando símbolos (x, y , etc.)
Exemplo:

d2
(x + 3x) = 2x + 3,
dx
d
cos x
(log...
tracking img