[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#14203: Manual: 'my-or'; 'let' inside macros
From: |
Nikita Karetnikov |
Subject: |
bug#14203: Manual: 'my-or'; 'let' inside macros |
Date: |
Sun, 14 Apr 2013 20:33:12 +0400 |
I think this example [1,2]:
(define-syntax my-or
(syntax-rules ()
((my-or)
#t)
((my-or exp)
exp)
((my-or exp rest ...)
(let ((t exp))
(if exp
exp
(my-or rest ...))))))
should look like this:
(define-syntax my-or
(syntax-rules ()
((my-or)
#t)
((my-or exp)
exp)
((my-or exp rest ...)
(let ((t exp))
(if t ; <-
t
(my-or rest ...))))))
Otherwise, what's the rationale behind 'let'?
AFAICT, it's described here [3], but Guile is not affected, right? So
the following works as well:
(define-syntax my-or
(syntax-rules ()
((my-or)
#t)
((my-or exp)
exp)
((my-or exp rest ...)
(if exp
exp
(my-or rest ...)))))
Note that 'my-or' is used in several places (e.g., [4]) and it's
necessary to change them all. Also, there are other macros that use
'let' (e.g., 'cond1').
[1] https://gnu.org/software/guile/manual/guile.html#Defining-Macros
[2] https://gnu.org/software/guile/manual/guile.html#Hygiene
[3] http://stackoverflow.com/a/3215238
[4] https://gnu.org/software/guile/manual/guile.html#Syntax-Case
pgpb8uEGfzljE.pgp
Description: PGP signature
- bug#14203: Manual: 'my-or'; 'let' inside macros,
Nikita Karetnikov <=