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

8 C O N T I N U A Ç Õ E S<br />

Sendo minimalista, <strong>Scheme</strong> não traz no núcleo da linguagem mecanismos para suporte<br />

a multitarefa, tratamento de exceções, backtracking e corotinas. Ao invés disso, <strong>Scheme</strong><br />

suporta uma única primitiva que permite construir todos esses mecanismos. Essa primitiva<br />

é a continuação.<br />

8.1 definindo continuações<br />

Informalmente, uma continuação é semelhante a uma fotografia do mundo no estado em<br />

que ele está num determinado momento. A seguinte história é inspirada em uma tentativa<br />

de um programador <strong>Scheme</strong> de explicar continuações a um programador Common Lisp.<br />

Um hacker está em seu porão escuro, trabalhando freneticamente na versão<br />

20.9342-2 de seu editor de textos, quando percebe algo terrível: o nível de<br />

cafeína em seu sangue está muito baixo, e ele pretendia trabalhar ininterruptamente<br />

na próximas 48 horas. Ele se lembra então que pouco dinheiro restou<br />

depois da <strong>com</strong>pra de seu novo monitor de 42 polegadas – ele poderá <strong>com</strong>prar<br />

apenas um copo de café.<br />

Conhecendo continuações, o hacker não se abala – ele deixa um adesivo<br />

amarelo em seu monitor dizendo o que iria fazer em seguida, sai para <strong>com</strong>prar<br />

café e em pouco tempo está de volta ao seu porão. Ele ainda não toma seu<br />

café; logo antes de levar o copo à boca, ele chama o procedimento <strong>Scheme</strong><br />

call-with-current-continuation, que devolve uma fotografia do ambiente<br />

ao seu redor naquele momento. Ele então deixa esta foto em uma caixa perto<br />

da porta.<br />

Depois de tomar seu café e sentir-se imensamente aliviado, o hacker volta ao<br />

Versão Preliminar<br />

<strong>com</strong>putador e passa a fazer o que quer que estava escrito no adesivo amarelo<br />

colado no monitor.<br />

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

195

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

Saved successfully!

Ooh no, something went wrong!