Subject: Re: PROGV question
From: Erik Naggum <erik@naggum.net>
Date: Mon, 11 Mar 2002 17:53:08 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3224857998133753@naggum.net>

(let ((*x* 3))
  (progv '(*x*) '(4)
    (list *x* (symbol-value '*x*)))) => (3 4)

* "Geoff Summerhayes" <sNuOmSrPnAoMt@hNoOtSmPaAiMl.com>
| I'm confused by the example also.  Why does *x* give let's binding
| of 3 and why does it take SYMBOL-VALUE to get progv's 4?

  Because *x* is not declared special in that particular example, and so
  let does not affect the symbol-value, but progv does.

| I see the behaviour I'd expect.  Obviously I'm missing something about
| the way the bindings work in, at least, LET's example.  Could someone
| explain or point to an explanation?  And why is an assumption mentioned
| about *x* not being globally special?

  Because let would have affected the global value (i.e., symbol-value) if
  it were.  Try it both ways to see the effect.

///
-- 
  In a fight against something, the fight has value, victory has none.
  In a fight for something, the fight is a loss, victory merely relief.