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

(string-append a "D’immenso")<br />

ERROR in string-concatenate: invalid type, expected string: 10<br />

(set! a "M’illumino")<br />

a<br />

”M’illumino”<br />

(string-append a "D’immenso")<br />

”M’illumino D’immenso”<br />

3.2 quadros e ambientes<br />

O modelo de avaliação que usamos no Capítulo 1 não contempla a possibilidade de<br />

modificarmos o valor de uma variável: símbolos eram usados para dar nomes a valores,<br />

e o vínculo entre nome e valor nunca mudava. Por isso pudemos ter certeza de que<br />

procedimentos sempre produzirão os mesmos resultados se chamados <strong>com</strong> os mesmos<br />

argumentos.<br />

Trocaremos este modelo por outro, onde trataremos variáveis não <strong>com</strong>o nomes asociados<br />

a valores, mas <strong>com</strong>o lugares na memória do <strong>com</strong>putador onde podemos armazenar<br />

valores.<br />

Um quadro representa a associação entre nomes e locais. Há um quadro<br />

chamado global, que sempre é visível por todas as formas; a forma lambda cria<br />

novos quadros, contendo ligações para os nomes de seus parâmetros.<br />

( define x 10)<br />

( define y 7)<br />

(( lambda (x)<br />

0.5)<br />

3.5<br />

(* x y))<br />

Versão Preliminar<br />

A figura a seguir ilustra a situação deste exemplo: há no ambiente global dois vínculos,<br />

x→ 10 e y→ 7. Ao ser avaliada, a forma lambda cria um novo quadro <strong>com</strong> mais um vínculo<br />

x→ 0.5. Dentro desta forma, para avaliar os argumentos de *, o interpretador buscará os<br />

84<br />

[ 27 de outubro de 2010 at 15:47 ]

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

Saved successfully!

Ooh no, something went wrong!