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

Jerônimo C. Pellegrini<br />

(lambda ()<br />

(add (call/cc ...)))<br />

(lambda ()<br />

(add ’connect)<br />

(lambda ()<br />

(add ’disconnect)<br />

(if ...) (if ...)<br />

(lambda ()<br />

(add ’disconnect)<br />

8.4 sistemas de exceções<br />

Versão Preliminar<br />

(lambda ()<br />

(add ’connect)<br />

Continuações podem ser usadas para implementar sistemas de tratamento de exceções.<br />

Uma macro simples usando syntax-rules é suficiente:<br />

( define-syntax try<br />

( syntax-rules ( on-error :)<br />

((_ on-error : handler f1 ...)<br />

( begin<br />

( let * (( condicao #f)<br />

( resultado-final #f) ;; presumindo falha<br />

( talvez<br />

( call /cc<br />

( lambda (k)<br />

( set ! throw ( lambda (co)<br />

;; handler deve ser chamado c/<br />

;; argumento de throw, então<br />

;; é necessário guardá-lo:<br />

( set ! condicao co)<br />

;; força o retorno <strong>com</strong> false:<br />

(k #f )))<br />

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