# [plt-scheme] Re: plt-scheme digest, Vol 1 #1089 - 7 msgs

I'll bite: Why is the second solution much
faster than the first one?
--DGK
>* As for your problem, you may wish to consider two different solutions:
*>*
*>* ;; Nat Nat (Nat Nat -> X) -> Matrix[X]
*>* (define (build-matrix n m f)
*>* (build-vector n (lambda (i) (build-vector m (lambda (j) (f i
*>* j))))))
*>*
*>* ;; Matrix[X] Nat Nat -> X
*>* (define (matrix-ref M i j)
*>* (vector-ref (vector-ref M i) j)))
*>* ;; suitable dimension check omitted
*>*
*>* or
*>*
*>* ;; Nat Nat (Nat Nat -> X) -> Matrix[X]
*>* (define (build-matrix n m f)
*>* (list->vector (apply append (build-list n (lambda (i) (build-list m
*>* (lambda (j) (f i j))))))))
*>*
*>* with a suitable deferencing schema. It's much faster than the first
*>* one.
*>*
*>* -- Matthias
*