# [plt-scheme] Some things about the Vector type that are not mentioned in normal documention

 From: Matthias Felleisen (matthias at ccs.neu.edu) Date: Sat Nov 27 17:00:07 EST 2004 Previous message: [plt-scheme] Some things about the Vector type that are not mentioned in normal documention Next message: [plt-scheme] Re: plt-scheme digest, Vol 1 #1089 - 7 msgs Messages sorted by: [date] [thread] [subject] [author]

```On Nov 27, 2004, at 4:19 PM, Devlin Bentley wrote:

> As a new user to Scheme, I recently tried to implement a 2D array as a
> vector of vectors in PltScheme.  Obviously things did not go well for
> me (I used Make-Vector and I filled the vector with another set of
> vectors.)
>
> Now nowheres in the included documentation, t-y-scheme or the PLT
> ...., issue.

As Robby points out and explains, it isn't an issue and therefore
doesn't deserver mentioning. You would get the same result in any
programming language, be that C or Java or Prolog or Haskell (lazy
means you save a reference to this inner vector). Every function call
evaluates all arguments. Some languages offer syntax that looks like a
function call but is really not and duplicates things for you. So you
should be grateful for the lesson. You have finally understood the
essence of call-by-value in a world with compound objects.

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

```

 Posted on the users mailing list. Previous message: [plt-scheme] Some things about the Vector type that are not mentioned in normal documention Next message: [plt-scheme] Re: plt-scheme digest, Vol 1 #1089 - 7 msgs Messages sorted by: [date] [thread] [subject] [author]