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

O contexto de uma <strong>com</strong>putação só é de interesse quando o programa está em execução.<br />

Assim, faz sentido modificar ligeiramente a definição de contexto dada acima:<br />

• Primeiro passo: Troca-se s por □;<br />

• Segundo passo: avalia-se a expressão <strong>com</strong> □ até que a <strong>com</strong>putação não possa mais<br />

continuar;<br />

• Terceiro passo: Um procedimento é construído que aceita □ <strong>com</strong>o parâmetro e cujo<br />

corpo é exatamente a expressão obtida no passo anterior.<br />

Como exemplo calcularemos o contexto de (+ 2 x) na expressão<br />

(if (> 10 20)<br />

(+ a (/ b c))<br />

(* (+ 2 x) 5))<br />

Primeiro, trocamos (+ 2 x) por □:<br />

(if (> 10 20)<br />

(+ a (/ b c))<br />

(* □ 5))<br />

Depois, avaliamos a expressão até não podermos mais continuar:<br />

(* □ 5)<br />

Finalmente, construimos o procedimento:<br />

( lambda (□)<br />

(* □ 5)<br />

e este é o contexto de (+ 2 x) naquela expressão. O segundo passo nos permitiu<br />

selecionar o segundo braço do if, eliminando-o.<br />

8.1.2 Procedimentos de escape<br />

Versão Preliminar<br />

Um procedimento de escape é um procedimento especial. Quando, dentro de uma <strong>com</strong>putação,<br />

um procedimento de escape é chamado, o resultado de toda a <strong>com</strong>putação passa<br />

a ser igual ao resultado do procedimento de escape: a expressão onde o procedimento de<br />

escape estava inserido é ignorada.<br />

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

197

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

Saved successfully!

Ooh no, something went wrong!