Mark,

The #!rest syntax is supported directly by Chicken and it appears the
extra indirection involved in syntax-case is causing the #!rest
keyword to be renamed before Chicken sees it (as you've probably
surmised).  I do not know an easy way to fix this offhand, although
some syntax-case wizard might.  However, you might wish to try the
horrible hack below, which may work in a limited fashion.

(define-syntax test
 (lambda (x)
   (syntax-case x (#!rest)
     ((_ (name arg ... #!rest r) e0 e1 ...)
      (syntax
       (define (name arg ... . r)
         e0 e1 ...)))
     ((_ (name ...) body ...)
      (syntax
       (define (name ...)
         body ...))))))

On 8/25/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Folks,
>
> Since I'm still having problems with syntax-case and rest arguments, I
> have devised the following example which hopefully makes my problem clear:
>
> (define-syntax test
>   (lambda (x)
>     (syntax-case x ()
>       ((_ (name ...) body ...)
>        (syntax
>         (define (name ...)
>           body ...))))))


_______________________________________________
Chicken-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to