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

Se define não fosse forma especial (ou seja, se fosse procedimento), o interpretador<br />

tentaria avaliar cada elemento da lista, e (define um-simbolo 1000) resultaria em erro,<br />

porque ainda não há vínculo para um-simbolo.<br />

Símbolos são objetos de primeira classe, <strong>com</strong>o números e strings; por isso podemos<br />

armazenar um símbolo em uma variável:<br />

(define var (quote meu-simbolo))<br />

var<br />

meu-simbolo<br />

Qualquer expressão pode ser definida <strong>com</strong>o valor de uma variável:<br />

(define pi 3.1415926536)<br />

(define phi 1.618033987)<br />

(define um-valor (* 2 (/ pi phi)))<br />

um-valor<br />

3.88322208153963<br />

O valor de (* 2 (/ pi (phi))) foi calculado antes de ser associado ao nome um-valor.<br />

Uma forma curta para (quote x) é ’x:<br />

’este-simbolo-nao-sera-avaliado<br />

este-simbolo-nao-sera-avaliado<br />

1.3 abstração de processos <strong>com</strong> funções (procedimentos)<br />

O mecanismo oferecido por quase todas as linguagens de programação para a abstração<br />

de processos é a função.<br />

Em <strong>Scheme</strong>, funções são chamadas de procedimentos 8 .<br />

8 Em outras linguagens da família Lisp, funções são sempre chamadas de “funções”; apenas na tradição de<br />

<strong>Scheme</strong> a nomenclatura é diferente.<br />

Versão Preliminar<br />

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