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

( define<br />

ponto <br />

( lambda ( obj ) ( is-of-type obj ( quote ponto ))))<br />

( define<br />

make-pt<br />

( lambda ()<br />

( cria ( quote ponto )<br />

( quote (( get-x set-x !) ( get-y set-y !))))))<br />

( begin<br />

( define get-x ( lambda ( struc ) ( vector-ref struc 1)))<br />

( define set-x ! ( lambda ( struc a) ( vector-set ! struc 1 a )))<br />

( begin<br />

( define get-y ( lambda ( struc ) ( vector-ref struc (+ 1 1))))<br />

( define set-y ! ( lambda ( struc a) ( vector-set ! struc (+ 1 1) a )))<br />

( begin ))))<br />

7.8 exemplo: trace<br />

(esta seção está in<strong>com</strong>pleta)<br />

Implementaremos um método para a<strong>com</strong>panhar as chamadas e retornos de um<br />

procedimento.<br />

O procedimento with-trace recebe dois argumentos: o primeiro é o nome de um<br />

procedimento, e o segundo é o procedimento; retorna outro procedimento, que realiza o<br />

trace, mostrando o nome do procedimento sendo chamado e seus argumentos (antes da<br />

chamada) e o valor retornado (após a chamada).<br />

Versão Preliminar<br />

( define with-trace<br />

( lambda ( proc proc-original )<br />

( lambda args<br />

( display " chamando ")<br />

( display ( cons proc args ))<br />

( newline )<br />

( let (( result ( apply proc-original args )))<br />

( display " => ")<br />

( display ( cons proc args ))<br />

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