The ignore and ignorable declarations
refer to for-value references 
    to variable bindings for the vars
and to function bindings for the fns.
An ignore declaration specifies that
for-value references to the indicated bindings
will not
occur within the scope of the declaration.
Within the scope of such a declaration,
it is desirable
for a compiler to issue a warning about 
the presence of
either a for-value reference to any var or fn,
    or a special declaration for any var.
An ignorable declaration specifies that 
for-value references to the indicated bindings
might or might not
occur within the scope of the declaration.
Within the scope of such a declaration,
it is not desirable
for a compiler to issue a warning about
the presence or absence of
either a for-value reference to any var or fn,
    or a special declaration for any var.
When not within the scope 
of a ignore or ignorable declaration,
it is desirable
for a compiler to issue a warning about
any var for which there is 
neither a for-value reference 
    nor a special declaration,
or about
any fn for which there is 
     no for-value reference.
Any warning about a "used" or "unused" binding must be of type style-warning,
and may not affect program semantics.
The stream variables established by 
     with-open-file,
     with-open-stream,
     with-input-from-string,
 and with-output-to-string,
and all iteration variables are, by definition, always "used".
Using (declare (ignore v)), 
for such a variable v has unspecified consequences.