This is an old revision of the document!


Características Técnicas

*Tipos de dados: átomo e a lista. É com esses dois tipos de dados que se constroem as expressões-S, as estruturas básicas de LISP.

 Uma expressão é um átomo, que é uma sequência de letras (por exemplo: foo), ou uma lista de zero ou mais expressões, separadas por espaços em branco e enquadradas por parêntesis. De seguida mostram-se várias expressões:
foo
()
(foo)
(foo bar)
(a b (c) d)
 A última expressão é uma lista de quatro elementos, o terceiro dos quais é uma lista de um elemento.
 

-Operadores Primitivos: -Quote: (quote x ) retorna x. Para uma leitura mais simples abreviamos (quote x) por 'x.

> (quote a)
a
> 'a
a
> (quote (a b c))
(a b c)

-Atom: (atom x) retorna o átomo t se o valor de x é um átomo ou a lista vazia (). Em Lisp convenciona-se usar o átomo t como representando o valor lógico verdade, e a lista vazia como o valor lógico falso.

> (atom 'a)
t
> (atom '(a b c)
()
> (atom '())
t

Através de quoting uma lista protege de ser avaliada. Uma lista unquoted como argumento de um operador, como por exemplo 'atom'

> (atom (atom ' a))
> t

Enquanto uma lista quoted é tratada como uma mera lista, neste caso uma lista de dois elementos.

> (atom '(atom 'a))
()

'quote' está intimamente ligado a uma das características distintivas de Lisp: o código e os dados são feitos de uma mesma estrutura, e o operador 'quote' é uma maneira de distinguir os dois.

-eq: (eq x y) retorna t se os valores de x e y são o mesmo átomo ou ambos uma lista vazia, e () caso contrário.

> (eq 'a 'a)
t
> (eq 'a 'b)
()
> (eq '() '())
t

-car:(car x) espera que o valor de x seja uma lista, e retorna o seu primeiro elemento.

> (car '(a b c))
a

-cdr:(cdr x ) espera que o valor de x seja uma lista, e retorna o resto da lista a seguir do primeiro elemento.

> (cdr '(a b c))
(b c)

-cons:(cons x y) espera que o valor de y seja uma lista, e retorna uma lista contendo o valor de x seguido dos elementos valor de y.

> (cons 'a '(b c))
(a b c)
> (cons 'a (cons 'b (cons 'c '())))
(a b c)
> (car (cons 'a '(b c)))
a
> (cdr (cons 'a '(b c)))
(b c)

-cond: (cond (p1 e1) … (pn en)) é avaliado da seguinte forma. As expressões p são avaliadas até que uma retorna t. Quando uma é encontrada, o valor correspondente da expressão e é retornado como o valor total da expressão cond.

> (cond ((eq 'a 'b) 'first)
        ((atom 'a) 'second))
second
 
lisp-2-trabalho.1333927034.txt.gz · Last modified: 2012/04/08 20:17 by clp · [Old revisions]