guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

a Q on syntax-rules vs syntax-case


From: Matt Wette
Subject: a Q on syntax-rules vs syntax-case
Date: Thu, 05 Feb 2015 11:44:13 -0800

I want to use macros inside a let which is part of an expansion of a top-level 
macro in order to have local bindings visible to macros. 

Is there a difference in implementation (e.g., when inside macros get expanded) 
between using syntax-rules versus syntax-case at the top level.   Is this 
coding considered OK?

(define-syntax foo
  (lambda (x)
    (syntax-case x ()
      ((_ <e>)
       #'(let* ((v (cons 'a #f))
                (doit (lambda (x) (set-cdr! v x))))
           (letrec-syntax
               ((foo-1 (syntax-rules ()
                         ((_ <v>)
                          (doit '<v>)))))
             (foo-1 <e>))
           v)))))

(define-syntax bar
  (syntax-rules ()
    ((_ <e>)
     (let* ((v (cons 'a #f))
            (doit (lambda (x) (set-cdr! v x))))
       (letrec-syntax
           ((foo-1 (syntax-rules ()
                     ((_ <v>)
                      (doit '<v>)))))
         (foo-1 <e>))
       v))))

(foo 1) => (a . 1)
(bar 1) => (a . 1)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]