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

semiperimeter<br />

area-tri/sides<br />

(lambda ...) a -> 4<br />

(lambda ...)<br />

b -> 6<br />

c -> 9<br />

s1 -> 4<br />

s2 -> 6<br />

s3 -> 9<br />

Este quadro não está ligado aos anteriores, porque quando semi-perimeter foi<br />

definido, o ambiente em vigor era apenas o do quadro global. O ambiente onde a forma<br />

semi-perimeter será avaliada é formado apenas por este novo quadro e o quadro global! As<br />

variáveis a, b, c e s não são visíveis neste procedimento.<br />

Quando o resultado de semi-perimeter é devolvido, o quadro onde ele foi avaliado<br />

é removido e o valor armazenado no local da variável s:<br />

semiperimeter<br />

area-tri/sides<br />

(lambda ...) a -> 4<br />

(lambda ...)<br />

b -> 6<br />

c -> 9<br />

s -> 9.562295<br />

Estes três quadros juntos formam o ambiente local da forma let. Quando as formas<br />

dentro do let foram avaliadas, os nomes serão procurados em cada quadro, na ordem<br />

induzida pelas setas pontilhadas – que é exatamente a ordem em que as variáveis locais e<br />

argumentos aparecem no texto do programa!<br />

Após o cálculo da área, o interpretador nos devolverá o valor 9.56229574945264, e<br />

todos os quadros serão destruídos, exceto global.<br />

Este novo modelo nos servirá neste Capítulo. Inicialmente não usaremos ainda procedimentos<br />

que tenham variáveis livres: todas as variáveis usadas em cada procedimento<br />

Versão Preliminar<br />

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

87

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

Saved successfully!

Ooh no, something went wrong!