autoplanet-unit-test-temp/svn/http_svn.untyped.com_diff_trunk_src_head/matrix-internal.ss
#lang scheme/base

(require "base.ss")

; Structs ----------------------------------------

; (struct integer integer (vectorof vector))
(define-struct matrix (x y data) #:transparent)

; Procedures -------------------------------------

; integer integer -> (vectorof vector)
(define (create-matrix x y [v 0])  
  (make-matrix x y
               (let ([vector-x (make-vector x)])
                 (for ([x-th (in-range x)])
                   (vector-set! vector-x x-th (make-vector y v)))
                 vector-x)))

; Provides ---------------------------------------

(provide (struct-out matrix))

(provide/contract
 [create-matrix (->* ((and/c natural-number/c (>/c 0))
                      (and/c natural-number/c (>/c 0)))
                     (any/c)
                     matrix?)])