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