[plt-scheme] Problem with (... ...) pattern

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Thu Nov 15 07:26:49 EST 2007

At Thu, 15 Nov 2007 13:22:01 +0100, Jens Axel Soegaard wrote:
> I tried this definition:
> 
>    (define (formals-arity stx)
>      (syntax-case stx ()
>        [(a ... (... ...))
>         (- (length (syntax->list #'(a ... ))))]
>        [(a ...)
>         (length (syntax->list stx))]
>        [else
>         (error 'formals-arity "not-yet implemented arity for " stx)]))
> 
> Alas, I get the error:
> 
>      syntax: missing ellipses with pattern variable in template in: a
> 
> and the a in #'(a ...) is colored red.

Tricky!

The `(... ...)' in the pattern means that `...' gets bound as a pattern
variable. In the scope of that binding, `(a ...)' as a template is the
`a' pattern variable followed by the `...' pattern variable.

Matthew



Posted on the users mailing list.