From 09cb3ae237f6563bc5d3189562cfc841784751f2 Mon Sep 17 00:00:00 2001 From: Noah Lavine Date: Wed, 2 Feb 2011 09:52:10 -0500 Subject: [PATCH] macro documentation fixup * doc/ref/api-macros.texi: make the difference between pattern variables and lexical variables a bit clearer. --- doc/ref/api-macros.texi | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/doc/ref/api-macros.texi b/doc/ref/api-macros.texi index 1fbfa24e2..5f15fb7aa 100644 --- a/doc/ref/api-macros.texi +++ b/doc/ref/api-macros.texi @@ -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