That's a bug. A pattern variable should always be bound to a syntax object.

Ryan


On 09/21/2011 03:39 PM, Casey Klein wrote:
I'm confused by the behavior of syntax/parse pattern variables that
come after dots. Sometimes they're bound to lists and sometimes to
syntax objects.

For example, in the following example, the variable `after-ones' gets
bound to a list:

    #lang racket/base

    (require (for-syntax racket/base))

    (begin
      (require (for-syntax syntax/parse))

      (define-syntax (m stx)
        (syntax-parse stx
          [(_ 1 ... . after-ones:expr)
           (if (list? #'after-ones)
               #''list
               #''not-list)]))

      (m 1 1 2 1 2 3)) ; 'list

but it gets bound to a syntax object if I drop the variable's `expr'
syntax-class.

That is, unless you're using scribble/eval, in which case dropping the
syntax-class does not change the behavior:

    #lang scribble/manual

    @(require scribble/eval)

    @(parameterize ([current-eval (make-base-eval)])
       (interaction-eval (require (for-syntax racket/base)))
       (interaction (begin
                      (require (for-syntax syntax/parse))

                      (define-syntax (m stx)
                        (syntax-parse stx
                          [(_ 1 ... . after-ones:expr)
                           (if (list? #'after-ones)
                               #''list
                               #''not-list)]))

                      (m 1 1 2 1 2 3))))

What's going on?
_________________________________________________
   For list-related administrative tasks:
   http://lists.racket-lang.org/listinfo/dev
_________________________________________________
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/dev

Reply via email to