From: Pascal Bourguignon
Subject: Re: Question on variable binding and assignment
Date: 
Message-ID: <877j4uq8ut.fsf@thalassa.informatimago.com>
David Sletten <·····@slytobias.com> writes:
> [...]
> But here some confusion regarding terminology begins to arise. The
> Common Lisp standard defines a "binding" as:
> "an association between a name and that which the name denotes."
>
> And the word "bound" means:
> "having an associated denotation in a binding."
>
> Furthermore, "that which [a] name denotes", in this context, is a
> variable not a value:
> "If a form is a symbol that is not a symbol macro, then it is the name
> of a variable, and the value of that variable is returned."
> http://www.lispworks.com/documentation/HyperSpec/Body/03_abaa.htm

As I see it,


Bindings can be bound or unbound. :-)

Symbols can have bindings or not. (Symbols can denote a binding or not)
When a symbol has a binding, the binding can be bound or unbound.
Symbols are names for bindings.  That's why we pass a symbol to BOUNDP.

(variable = binding)


> [...]
> Apparently the symbol is bound but the variable (which is not a name)
> is unbound?

We must distinguish English from CLHSese.  
In English, something has a binding <=> something is bound.
But in CLHSese, "binding" is just a synonym for "variable".  
A variable can be "bound" or "unbound".
Lexical variables are always "bound".




Ok, if we look more closely at the glossary, we see that:

  variable n. a binding in the ``variable'' namespace. See Section
  3.1.2.1.1 (Symbols as Forms).

There are various kind of bindings.  Here we discussed variable
bindings, so variable = binding.  There are other kind of bindings
(block names, tag names, functions, macros, symbol-macro, package
names, etc).


  bind v.t. (a variable) to establish a binding for the variable.

  binding n. an association between a name and that which the name
  denotes. ``A lexical binding is a lexical association between a name
  and its value.'' When the term binding is qualified by the name of a
  namespace, such as ``variable'' or ``function,'' it restricts the
  binding to the indicated namespace, as in: `` let establishes
  variable bindings.'' or ``let establishes bindings of variables.''



  bound adj., v.t. 1. adj. having an associated denotation in a
  binding. ``The variables named by a let are bound within its body.''
  See unbound. 2. adj.  having a local binding which shadows[2]
  another. ``The variable *print-escape* is bound while in the princ
  function.'' 3. v.t. the past tense of bind.

  bound declaration n. a declaration that refers to or is associated
  with a  variable or function and that appears within the special
  form that establishes the variable or function, but before the body
  of that special form (specifically, at the head of that form's
  body). (If a bound declaration refers to a function binding or a
  lexical variable binding, the scope of the  declaration is exactly
  the scope of that binding. If the declaration refers to a dynamic
  variable binding, the scope of the declaration is what the scope of
  the binding would have been if it were lexical rather than dynamic.)



  unbound adj. not having an associated denotation in a binding. See
  bound.

  unbound variable n. a name that is syntactically plausible as the
  name of a  variable but which is not bound in the variable
  namespace.


-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

Nobody can fix the economy.  Nobody can be trusted with their finger
on the button.  Nobody's perfect.  VOTE FOR NOBODY.