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

(base)<br />

10<br />

(base 2)<br />

2<br />

(base)<br />

10<br />

A forma especial parameterize é semelhante ao let, mas as variáveis vinculadas<br />

devem ser objetos-parâmetro. Os valores destes objetos são modificados apenas durante a<br />

execução do trecho definido pelo escopo de parameterize, inclusive em precedimentos<br />

chamados a partir dali.<br />

( define show<br />

show.<br />

( lambda (x)<br />

( display "x = ")<br />

( display ( number- > string x ( base )))<br />

( newline )))<br />

Como o parâmetro base é 10 por default, este valor será usado quando aplicamos<br />

(show 20)<br />

x = 20<br />

No entanto, ao mudarmos base para 2, alteramos o <strong>com</strong>portamento de qualquer<br />

procedimento usado dentro do escopo do parameterize:<br />

( parameterize (( base 2))<br />

( show 20))<br />

x = 10100<br />

(faltando: O procedimento make-parameter aceita mais um argumento opcional)<br />

Os primeiros sistemas Lisp usavam escopo dinâmico, mas <strong>Scheme</strong> e Common Lisp<br />

adotaram o escopo estático por default porque o escopo dinâmico traz aos programas<br />

Versão Preliminar<br />

diversos problemas, desde dificuldade de legibilidade até para a verificação de tipos (que<br />

não pode mais ser feita em tempo de <strong>com</strong>pilação, ou antes da interpretação). Há, no<br />

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

111

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

Saved successfully!

Ooh no, something went wrong!