[plt-scheme] Check Syntax & mangled identifiers

From: Chongkai Zhu (czhu at cs.utah.edu)
Date: Sat May 23 17:34:55 EDT 2009

Just keep the srcloc and the original prop of the identifier seems to be 
enough for me.


#lang scheme
(require (for-syntax scheme))

(define-for-syntax (underscore stx)
  (datum->syntax stx
                  (format "_~a"
                          (syntax->datum stx)))

(define-syntax (u stx)
  (syntax-case stx ()
    ((_ (name val) . body) #`(let ((#,(underscore #'name) val)) . body))
    ((_ id) (underscore #'id))))

;; case 1
(u (x 123) (u x))       

;; case 2
(let ((_x 123))
  (u x))
(u (x 123) _x)

Posted on the users mailing list.