# [racket] do loops in racket, also srfi/25 query

I was playing around with ProjectEuler #11 and found a lisp solution and
adapted it to Racket. Part of the solution had code like the following to
find products of values in a 20x20 vector.
(define (prod-of-vec-lines-of-length-4 v ix iy dx dy)
(do ([p 1 (* p (if (in-vector? x y 20 20) (vector-ref v (+ (* 20 y) x))
0))]
[x ix (+ x dx)]
[y iy (+ y dy)]
[c 0 (add1 c)])
((= c 4) p)))
I realize I've hard-coded this in a very ugly fashion to 20x20 vectors.
My questions are:
1) Is there a more Racket-idiomatic way to write the "do" loop above?
2) If I wanted to use srfi/25 to do this in a nicer fashion, how would I
read in the array? - I liked being able to read in the vector with simply
(read in) - is there a simply , one-line way to convert a vector to an
array (make-array (shape 0 20 0 20) vec) puts the entire 400 element vector
into the first element of the array!
Thanks,
-joe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20120324/c3bcd5e8/attachment.html>