;; -*-theme-d-*-

;; Copyright (C) 2015 Tommi Höynälänmaa
;; Distributed under GNU General Public License version 3,
;; see file doc/GPL-3.

;; Expected results: translation and running OK

(define-proper-program (tests test304)

  (import (standard-library core)
	  (standard-library console-io)
	  (tests test303))

  (define-param-proc console-display-matrix (%number)
                     (((mx (:matrix %number)))
                       <none>
                      (nonpure))
    (let ((rows (field-ref mx 'rows))
          (columns (field-ref mx 'columns)))
      (do ((i1 <integer> 0 (+ i1 1))) ((>= i1 rows))
        (begin
          (do ((i2 <integer> 0 (+ i2 1))) ((>= i2 columns))
            (console-display (matrix-ref mx i1 i2))
            (if (< i2 (- columns 1))
                (console-display-string " ")))
          (console-newline)))))

  (define-simple-proc main (() <none> nonpure)
    (let ((r1 (sin 1.5))
	  (mx1 (make-matrix 3 3 -1.0)))
      (console-display r1)
      (console-newline)
      (console-display-matrix mx1)
      (console-newline)))

  )