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

12<br />

1.5 condições<br />

Para tomar decisões e escolher uma dentre duas ou mais formas a avaliar, <strong>Scheme</strong> oferece<br />

algumas formas especiais. A mais simples delas é o if. A forma geral do if é<br />

(if teste forma1 forma2 )<br />

Durante a avaliação de uma forma if, o interpretador primeiro avaliará a forma<br />

teste. Se o valor resultante for diferente de #f, forma1 será avaliada, e em caso contrário<br />

forma2 será avaliada.<br />

(define maximo 20)<br />

(if (> 15 maximo) ’muito-longe ’perto)<br />

perto<br />

Como o if é usado justamente para escolher qual forma será avaliada, ele deve ser<br />

uma forma especial (caso contrário tanto forma1 <strong>com</strong>o forma2 seriam avaliadas).<br />

Além dos procedimentos para <strong>com</strong>paração numérica =, , =, há procedimentos<br />

para <strong>com</strong>parar objetos. Dois deles são importantes:<br />

• eqv retorna #t para números, caracteres, booleanos ou símbolos iguais (dois<br />

símbolos são iguais se são representados pela mesma string). Para objetos <strong>com</strong>postos<br />

(por exemplo strings, listas, vetores) eqv verificará se a localização dos objetos é a<br />

mesma na memória; se for, retornará #t;<br />

• equal faz as mesmas verificações que eqv, mas também <strong>com</strong>para objetos <strong>com</strong>postos<br />

<strong>com</strong>o listas, vetores e strings um elemento por vez.<br />

(eqv 1 1)<br />

#t<br />

(eqv ’a ’a)<br />

#t<br />

Versão Preliminar<br />

(eqv "" "")<br />

; depende da implementação de <strong>Scheme</strong><br />

(eqv (lambda (x) x) (lambda (x) x))<br />

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

17

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

Saved successfully!

Ooh no, something went wrong!