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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

((_ test1 test2 ...)<br />

( let (( result test1 ))<br />

(if result<br />

result<br />

(or* test2 ...))))))<br />

(or* (begin (display 5) (newline) 10) #f)<br />

5<br />

10<br />

(expand ’(or* (begin (display 5) (newline) 10) #f))<br />

(let ((result108 (begin (display 5) (newline) 10))) (if result108 result108<br />

(or* #f)))<br />

7.5.2 Tipos de variáveis e seus valores<br />

(esta seção está in<strong>com</strong>pleta)<br />

Durante a expansão de macros, não necessariamente temos informação a respeito dos<br />

tipos de variáveis ou de seus valores.<br />

Embora macros possam expandir a si mesmas recursivamente, há cuidados que<br />

devemos tomar quando usarmos este tipo de mecanismo.<br />

7.6 quando usar macros<br />

Macros são uma forma de modificar S-expressões antes de sua interpretação, e são úteis<br />

quando uma função não poderia ser usada porque não se quer avaliar as expressões<br />

passadas <strong>com</strong>o parâmetros (<strong>com</strong>o por exemplo na implementação de my-and mostrada<br />

neste capítulo).<br />

Versão Preliminar<br />

Não se re<strong>com</strong>enda o uso de macros para ganhar eficiência; qualquer lentidão em<br />

um programa deve ser identificada <strong>com</strong> ferramentas adequadas (profilers), e uma vez<br />

identificado o problema, as soluções tentadas devem ser primeiro a melhoria do algoritmo<br />

usado e a limpeza de código, e em seguida a declaração de alguns procedimentos <strong>com</strong>o<br />

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

183

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

Saved successfully!

Ooh no, something went wrong!