; so you know that vectors do exist as scheme types, right? (use srfi-1) ; uninitialised x by y matrix (define (make-matrix x y) (let ((v (make-vector y))) (for-each (lambda (z) (vector-set! v z (make-vector x))) (iota y)) v)) ; reference a matrix element (define (matrix-ref m x y) (vector-ref (vector-ref m y) x)) ; set a matrix element (define (matrix-set! m x y e) (vector-set! (vector-ref m y) x e))