[racket] Help with simple macro

From: Harry Spier (vasishtha.spier at gmail.com)
Date: Wed May 16 23:51:30 EDT 2012

I'm trying to create a macro to simplify the syntax of having a local
scope with an indexed sequence generator.

Instead of entering this:
(let-values ([(more? get next) (sequence-generate (in-indexed SOME-SEQUENCE)])
       .... (get-next) ...(get-next).. etc. ))

I'd like to be able to enter this instead:
(with-sequence  SOME-SEQUENCE
. . . .. . (get-next) .
 . . . (get-next) . . . etc.)

I'm able to create a macro to do this
(with-sequence MORE? GET-NEXT SOME-SEQUENCE .........)
i.e.
(define-syntax-rule (with-indexed-sequence MORE? GET-NEXT SEQ BODY  ...)
     (let-values ([(MORE? GET-NEXT)(sequence-generate (in-indexed SEQ))])
       BODY ... ))

but I've been unable to create a macro to create this form:
---------------------------------------
(with-sequence  SOME-SEQUENCE
. . . .. . (get-next) .
 . . . (get-next) . . . etc.)
---------------------------------------

where I don't pass the names of the thunks to test for end of sequence
or to get the next item in the sequence, but that they are called
"more?" and "get-next" by convention.

How would I do this.

Thanks,
Harry

Posted on the users mailing list.