Eric's solution is probably the best one, but using `define-values` can still be made a bit simpler: (define-syntax-rule (ref name ...) (define-values (name ...) (values (void 'name) ...))) since `void` takes a variable number of arguments and discards them.
Laurent On Tue, Feb 25, 2014 at 8:16 AM, Eric Dobson <eric.n.dob...@gmail.com>wrote: > Does this do what you want? (Note its untested.) > > (define-syntax-rule (ref name ...) > (begin > (define name (void)) ...)) > > Using define-values is tricky as you saw, because you need to refer to > name in the body to get the right duplication but then not use it. > > On Mon, Feb 24, 2014 at 10:23 PM, Kevin Forchione <lyss...@gmail.com> > wrote: > > I'm trying to code a macro that will define a variable number of > identifiers. What I want is something like: > > > > (ref foo bar baz ...) > > > > and assign them an initial value of #<void>. The kludge I've come up > with works, but there must be a better way to do this: > > > > (define-syntax-rule (ref name ...) > > (define-values (name ...) (values ((λ (name) (void)) #f) ...))) > > > >>(ref foo bar baz) > >>foo > > #f > > > > Thanks! > > > > -Kevin > > ____________________ > > Racket Users list: > > http://lists.racket-lang.org/users > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users >
____________________ Racket Users list: http://lists.racket-lang.org/users