macros.scm added by graspee on Mon May 14 19:56:31 2012
; for macro from loops egg by Juergen Lorenz ; changed to include the upper bound in the iteration, ; step (and therefore a set of brackets) removed and renamed "for" ; from "do-for" (define-syntax for ;was do-for (syntax-rules () ((_ var start stop xpr xpr1 ...) ; brackets around start stop step (let ((%stop stop)) (let loop ((var start)) (unless (> var %stop) ; was >= xpr xpr1 ... (loop (+ 1 var)))))) ((_ var (start stop) xpr . xprs) (do-for var (start stop 1) xpr . xprs)))) ;2 dimensional array size of 1st dimension, size of 2nd, data (define-record 2darray x y data); define-record is not standard scheme ; returns a new 2darray object of the size x by y (define (new-2darray x y) (make-2darray x y (make-vector (* x y)))) ;access the array. array xpos ypos data to put / get ;it's 0 based so an array 200 by 200 will be accessed ;0..199 by 0..199 (define (2darray-put a x y data) (vector-set! (2darray-data a) ( + x (* y (2darray-x a))) data) ) (define (2darray-get a x y) (vector-ref (2darray-data a) ( + x ( * y (2darray-x a)))))