This is the mail archive of the
kawa@sourceware.org
mailing list for the Kawa project.
Re: Strange error output for undefined macros inside macros
Kjetil Svalastog Matheussen wrote:
> For example, can syntax-case macros
change variable names?
Yes.
Can I do [omitted] with syntax-case macros?
Yes.
(define-syntax call-reversename
(lambda (form)
(syntax-case form ()
((_ func . args)
(let* ((symstr
(symbol->string (syntax-object->datum (syntax func))))
(revsym
(string->symbol
(list->string
(reverse
(string->list symstr)))))
(revstx
(datum->syntax-object (syntax func) revsym)))
#`(,revstx . args))))))
or using the define-syntax-case convenience macro:
(define-syntax-case call-reversename ()
((_ func . args)
(let* ((symstr
(symbol->string (syntax-object->datum (syntax func))))
(revsym
(string->symbol
(list->string
(reverse
(string->list symstr)))))
(revstx
(datum->syntax-object (syntax func) revsym)))
#`(,revstx . args))))
(call-reversename nim 2 1 6) => 1
--
--Per Bothner
per@bothner.com http://per.bothner.com/