[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

INTERN and "intern" -- the unwise choice of terminology

I believe the confusion over the interning-an-unowned-symbol stems from
the misleading use of the verb "intern" on page 172, and I think I'd
rather see that part of the documentation fixed than have any change
in th semantics of INTERN, UNINTERN, and/or IMPORT.

The state of being "interned" clearly requires the symbol to be owned; and 
the penultimate paragraph of the introductory to chapter 11 says "this process 
[interning] is performed by the function INTERN."  For these reasons, one 
might be tempted to agree with Nick that every call to INTERN results in an
interned symbol; yet the definition of INTERN rather implies that when
a symbol is already accessible [note well: "accessible", not "interned"]
it is merely returned, without the modification to the home package 
outlined for the case of when "no such symbol is found".

My recommendations are quite straightforward:
 1) pick some other word to use in place of "interned" to describe the
    state so laboriously depicted on page 172, so that the reader is not
    tempted to jump to the conclusion that it is coextensive with INTERN'd
 2) Introduce the user-level operation for modifying a symbol's package
    "cell" [its home package].  As Nick has already pointed out, the
    current design doesn't prevent one from damageing that cell, by 
    injudicious use of UNINTERN and/or IMPORT; and worse yet, it doesn't
    provide any way to say precisely what you mean when you want to
    change its home [which is different from merely IMPORTing it somewhere].

-- JonL --