1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

macro documentation fixup

* doc/ref/api-macros.texi: make the difference between pattern variables
  and lexical variables a bit clearer.
This commit is contained in:
Noah Lavine 2011-02-02 09:52:10 -05:00 committed by Andy Wingo
parent 71d0152e66
commit 09cb3ae237

View file

@ -574,11 +574,14 @@ Here's another solution that doesn't work:
(if it then else)))))))
@end example
The reason that this one doesn't work is that there are really two environments
at work here -- the environment of pattern variables, as bound by
@code{syntax-case}, and the environment of lexical variables, as bound by normal
Scheme. Here we need to introduce a piece of Scheme's environment into that of
the syntax expander, and we can do so using @code{syntax-case} itself:
The reason that this one doesn't work is that there are really two
environments at work here -- the environment of pattern variables, as
bound by @code{syntax-case}, and the environment of lexical variables,
as bound by normal Scheme. The outer let form establishes a binding in
the environment of lexical variables, but the inner let form is inside a
syntax form, where only pattern variables will be substituted. Here we
need to introduce a piece of the lexical environment into the pattern
variable environment, and we can do so using @code{syntax-case} itself:
@example
;; works, but is obtuse