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

Jerônimo C. Pellegrini<br />

extensão dinâmica<br />

do procedimento<br />

entrada no<br />

procedimento<br />

saída do<br />

procedimento<br />

call/cc<br />

call/cc<br />

A entrada na extensão dinâmica de um procedimento acontece em duas situações:<br />

quando ele é chamado ou quando alguma continuação, que havia sido criada dentro da<br />

extensão dinâmica deste procedimento, é invocada.<br />

A saída da extensão dinâmica de um procedimento acontece quando ele retorna<br />

ou quando uma continuação, criada fora da extensão dinâmica deste procedimento, é<br />

invocada.<br />

O procedimento dynamic-wind força a execução de trechos de código durante qualquer<br />

entrada ou saída da extensão dinâmica de um procedimento, inclusive quando a<br />

entrada ou saída se dá via continuações. Este procedimento aceita três argumentos:<br />

( dynamic-wind<br />

before<br />

code<br />

after )<br />

Versão Preliminar<br />

Os argumentos before, code e after devem ser procedimentos sem argumentos. O programa<br />

a seguir é usado no padrão R 5 RS para ilustrar o funcionamento de dynamic-wind:<br />

( letrec (( path ’())<br />

(c #f)<br />

( add ( lambda (s)<br />

( set ! path ( cons s paths )))))<br />

( dynamic-wind<br />

;; before:<br />

( lambda () ( add ’ connect ))<br />

202<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!