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 - Jerônimo C. Pellegrini<br />

O conteúdo do arquivo saida.txt após a execução deste programa será:<br />

"Seu número da sorte é: "2041087718#\newline"Tenha um bom dia!"<br />

que é a sequência de objetos <strong>Scheme</strong> que escrevemos, de forma que possam ser lidos<br />

novamente pelo interpretador (uma string, um número, um caracter #\newline e outra<br />

string).<br />

Usamos write, por exemplo, para criar um procedimento save-db que grava em um<br />

arquivo nossa base de dados de filmes.<br />

( define save-db<br />

( lambda (db file-name )<br />

( let (( out ( open-output-file file-name )))<br />

( write db out )<br />

( close-output-port out ))))<br />

Gravaremos nossa base de dados em um arquivo:<br />

( save-db ’(("Dr. Strangelove " ( estante c4 ))<br />

(" Era uma vez no oeste " ( estante b3 ))<br />

(" Fahrenheit 451 " ( emprestado " John Doe "))<br />

("Os Sete Samurais " ( estante c4 )))<br />

" movies . dat ")<br />

O conteúdo de movies.dat será:<br />

(("Dr. Strangelove" (estante c4))<br />

("Era uma vez no oeste" (estante b3))<br />

("Fahrenheit 451" (emprestado "John Doe"))<br />

("Os Sete Samurais" (estante c4)))<br />

O procedimento load-db recupera a base de dados de um arquivo, mas é um pouco<br />

diferente de save-db:<br />

( define load-db<br />

( lambda ( file-name )<br />

Versão Preliminar<br />

( let (( in ( open-input-file file-name )))<br />

( let (( db ( read in )))<br />

( close-input-port in)<br />

db ))))<br />

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

63

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

Saved successfully!

Ooh no, something went wrong!