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 />

( define assoc<br />

( lambda ( chave lista )<br />

( cond (( null lista )<br />

#f)<br />

(( equal ( caar lista ) chave )<br />

( car lista ))<br />

( else<br />

( assoc chave ( cdr lista ))))))<br />

Quando a chave não é encontrada, o valor de retorno é #f:<br />

(assoc "O Iluminado" ’())<br />

#f<br />

Quando a chave é encontrada, assoc retorna o par em que ela estava: podemos por<br />

exemplo usar assoc para descobrir onde está Os Sete Samurais de Kurosawa:<br />

( assoc "Os Sete Samurais "<br />

’((" Era uma vez no oeste " ( estante b3 ))<br />

(" Fahrenheit 451 " ( emprestado " John Doe "))<br />

("Os Sete Samurais " ( estante c4 ))))<br />

(”Os Sete Samurais” (estante c4))<br />

O procedimento assoc existe em <strong>Scheme</strong>, mas sempre retorna #f quando um item<br />

não está na base de dados. Podemos torná-lo mais flexível, passando <strong>com</strong>o parâmetro o<br />

objeto que deve ser retornado quando um item não é encontrado:<br />

( define assoc / default<br />

( lambda ( chave lista nao-encontrado )<br />

( cond (( null lista )<br />

nao-encontrado )<br />

(( equal ( caar lista ) chave )<br />

( car lista ))<br />

( else<br />

Versão Preliminar<br />

( assoc / default chave<br />

( cdr lista )<br />

nao-encontrado )))))<br />

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

47

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

Saved successfully!

Ooh no, something went wrong!