It's easy to add this: (define (generate-temporaries/locs xs) (for/list {[x (in-list (if (syntax? xs) (syntax->list xs) xs)]} (define sym (if (identifier? x) (syntax-e x) 'fresh)) (define src (if (syntax? x) x #f)) (define mark (make-syntax-introducer)) (mark (datum->syntax #f sym src))))
Carl Eastlund On Fri, Jul 15, 2011 at 1:29 AM, Danny Yoo <d...@cs.wpi.edu> wrote: > I'd like the ability to generate a bunch of temporaries, but with > specific source locations. I'm having an awkward time fixing an > embarrassing bug in my chaining-compare library. > > > I have the following expression: > > (with-syntax ([rhs-value (datum->syntax #f > (gensym 'rhs-value) > (list (syntax-source #'rhs) > (syntax-line #'rhs) > (syntax-column #'rhs) > (syntax-position #'rhs) > (syntax-span #'rhs)))]) > ...) > > > and I feel really cheesy doing the gensym here! I'd love to replace this > with: > > (with-syntax ([(rhs-value) (generate-temporaries #'(rhs)]) > ...) > > except that the resulting temporary variable doesn't have the correct > source location of the input, and having the 'rhs-value' syntax have > the right source location is critical. > > > In my imagination, I'd like to be able to say: > > (with-syntax ([(rhs-value) (generate-temporaries/locs #'(rhs) #'(rhs))]) > ...) > > and have this hypothetical "generate-temporaries/locs" adopt the > source locations from the second argument. Is this easy to build, or > does such functionality already exist? _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users