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

(do ((j 0 (+ j 1)))<br />

((= j cols ))<br />

( matrix-set ! mat-new i j<br />

( apply proc ( map ( lambda (x)<br />

4.2 operações <strong>com</strong> vetores e matrizes<br />

( matrix-ref x i j))<br />

mats )))))))))<br />

Usando as variantes de map e fold para vetores podemos facilmente escrever procedimentos<br />

para realizar operações sobre vetores. Soma e multiplicação por escalar são uma<br />

aplicação trivial de vector-map (ou vector-map!).<br />

( define vector + scalar<br />

( lambda (k v)<br />

( vector-map ( lambda (x) (+ x k)) v )))<br />

( define vector * scalar<br />

( lambda (k v)<br />

( vector-map ( lambda (x) (* x k)) v )))<br />

( define vector + scalar !<br />

( lambda (k v)<br />

( vector-map ! ( lambda (x) (+ x k)) v )))<br />

A soma de vetores é igualmente simples.<br />

( define vector + vector<br />

( lambda (v1 v2)<br />

( vector-map + v1 v2 )))<br />

( define vector + vector !<br />

( lambda (v1 v2)<br />

( vector-map ! + args )))<br />

Versão Preliminar<br />

O produto interno de dois vetores requer um vector-map e um vector-fold.<br />

( define vector * vector<br />

( lambda (v1 v2)<br />

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