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

O procedimento make-host cria variáveis hostname e ip, depois retorna métodos para<br />

acessá-las.<br />

( define make-host<br />

( lambda () ;; quando make-host for chamada,<br />

( let (( hostname "") ;; Crie duas variáveis novas neste<br />

(ip "")) ;; ambiente<br />

( lambda ( msg ) ;; e retorne uma função de 1 argumento<br />

;; <strong>com</strong> acesso às variáveis<br />

( case msg<br />

(( get-hostname ) ( lambda () hostname ))<br />

(( get-ip ) ( lambda () ip ))<br />

(( set-hostname ) ( lambda ( new-name )<br />

( set ! hostname new-name )))<br />

(( set-ip ) ( lambda ( new-ip )<br />

( set ! ip new-ip ))))))))<br />

A função devolvida por make-host é um fecho.<br />

( define msg<br />

( lambda ( obj . args )<br />

(( obj msg args ))))<br />

Damos então dar nomes aos métodos:<br />

( define get-hostname<br />

( lambda ( host )<br />

( msg host ’ get-hostname )))<br />

( define set-hostname<br />

( lambda ( host name )<br />

( msg host ’ get-hostname name )))<br />

Versão Preliminar<br />

Este sistema de objetos pode suportar herança. Por exemplo, “server” pode herdar os<br />

atributos e métodos de host:<br />

( define make-server<br />

( lambda ()<br />

( let (( listen ’(80 22))<br />

( my-host ( make-host )))<br />

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

107

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

Saved successfully!

Ooh no, something went wrong!