On Mar 27, 2009, at 7:06 PM, M. S. wrote:

;; define an object at compile time by using an identifier macro
(define-syntax define-ct
  (syntax-rules ()
    ((_ name value)
     (define-syntax name
       (lambda (x)
         (syntax-case x ()
           [(_ . rest) #'(value . rest)]
           [_  #'value]))))))

This is the same as:

(define-syntax define-ct
  (syntax-rules ()
    [(_ name expr)
     (define-syntax name (identifier-syntax expr))]))

That is, (define-ct foo some-expr) replaces every occurrence
of foo by some-expr.  It does not define a variable foo to be
usable at compile time, which is what was needed.

Aziz,,,

Reply via email to