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

entatno, quando não se trata de uma servidor mas sim de uma aplicação isolada que<br />

deve ser usada individualmente por usuários, este problema torna-se menos importante;<br />

se o código passado para eval é gerado pelo próprio programa (<strong>com</strong>o em Programação<br />

Genética), o problema deixa de existir.<br />

O código passado para eval não é <strong>com</strong>pilado, ainda que o resto do programa seja, e<br />

isto pode tornar o programa mais lento que o necessário 3 ;<br />

Finalmente, o uso indiscriminado de eval pode tornar um programa ilegível e<br />

dificultar sua manutenção.<br />

exercícios<br />

Ex. 64 — Muitas linguagens (por exemplo Python e PHP) tem uma função eval, que toma<br />

uma string e a interpreta <strong>com</strong>o um programa. Descreva o que teria que ser modificado no<br />

sistema de programação genética deste capítulo se o eval de <strong>Scheme</strong> somente aceitasse<br />

strings.<br />

Ex. 65 — A função de fitness que usamos no sistema de programação genética calcula<br />

a soma dos quadrados dos erros entre os valores desejados para y e os valores obtidos<br />

pelo indivíduo (a forma <strong>Scheme</strong>). Suponha que queiramos aproximar f(x) = cos(x).<br />

Uma forma <strong>Scheme</strong> (+ (cos x) 500) terá um valor de fitness muito baixo, quando na<br />

verdade está apenas transladada. Pense em uma maneira de valorizar mais este indivíduo,<br />

justifique sua idéia e a implemente. Comente os resultados: a nova função de fitness<br />

melhorou o desempenho do sistema<br />

Ex. 66 — Modifique o interpretador meta-circular deste capítulo para incluir avaliação<br />

preguiçosa por default.<br />

Ex. 67 — Modifique o interpretador meta-circular descrito neste Capítulo para incluir a<br />

forma especial cond.<br />

Ex. 68 — Escreva um interpretador de <strong>Scheme</strong> em C. Você pode <strong>com</strong>eçar <strong>com</strong> o padrão<br />

R 4 RS, que é bastante simples, e aos poucos adicionar características de R 5 RS e R 7 RS.<br />

Versão Preliminar<br />

3 Podemos imaginar uma implementação <strong>Scheme</strong> que <strong>com</strong>pile código sob demanda, mas a <strong>com</strong>pilação de<br />

cada forma passada para eval também demandaria tempo.<br />

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

157

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

Saved successfully!

Ooh no, something went wrong!