Re: Crazy macro



In article <1146327686.463468.103010@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>,
"Drew McDermott" <airfoyle@xxxxxxxxxxxxxx> wrote:

As an example, we can use 'control-nest' to provide the functionality
of 'let*' for 'multiple-value-let':

(control-nest
(multiple-value-let (x y z)
(foo ...)
:bind-p-q)
:bind-p-q
(multiple-value-let (p q)
(baz x y)
:bind-r-s)
:bind-r-s
(multiple-value-let (r s)
(zap x p)
...)))

The thing that bothers me about this is the loss of referential
transparency. To understand what X and Y mean in the :BIND-P-Q section,
you have to find all the places where the tag is referenced. This is
similar to the reason why lexical binding is generally preferred over
dynamic binding.

--
Barry Margolin, barmar@xxxxxxxxxxxx
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***
*** PLEASE don't copy me on replies, I'll read them in the group ***
.