This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]