08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

notas de aula - Jerônimo C. Pellegrini<br />

1.10.2 Exemplo: o esquema de <strong>com</strong>partilhamento de segredos de Shamir<br />

1.11 listas<br />

Uma lista é formada por vários elementos do tipo par. Um par em <strong>Scheme</strong> é uma estrutura<br />

<strong>com</strong> duas partes. As duas partes de um par são chamadas (por motivos históricos 14 ) car<br />

e cdr.<br />

Para criar um par usa-se o procedimento cons (o “construtor” de listas).<br />

(cons 1 2)<br />

(1 . 2)<br />

Pedimos ao REPL para executar o procedimento cons <strong>com</strong> argumentos 1 e 2, e ele<br />

nos enviou o resultado: o par (1 . 2).<br />

cdr:<br />

Podemos obter o conteúdo de ambas as partes do par usando os procedimentos car e<br />

(cons "este é o car" "este é o cdr")<br />

(”este é o car ” . ”este é o cdr”)<br />

(car (cons "este é o car" "este é o cdr"))<br />

”este é o car”<br />

(cdr (cons "este é o car" "este é o cdr"))<br />

”este é o cdr”<br />

Uma lista em <strong>Scheme</strong> é uma sequência de elementos armazenados na memória<br />

usando pares: cada par tem um elemento no car, e seu cdr tem uma referência ao<br />

próximo par:<br />

Versão Preliminar<br />

14 Originalmente eram abreviações para contents of address register e contents of decrement register, que eram<br />

campos disponíveis nos <strong>com</strong>putador IBM 704 usados na implementação da primeira versão de LISP em 1959<br />

(esta implementação foi feita por Steve Russel). Em Common Lisp, há first e rest <strong>com</strong>o sinônimos para<br />

car e cdr.<br />

[ 27 de outubro de 2010 at 15:47 ]<br />

45

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!