Peter Bex scripsit:

> I wasn't aware of that CL behaviour.  IIUC that's actually conflating
> two different things: creating an uninterned symbol and "unbinding"
> an interned symbol.  I don't know of a way to unbind a variable through
> Scheme, but you can set the symbol's value slot (0) to C_SCHEME_UNBOUND
> in C.  This has to go with the warnings "Don't try this at home", and
> "this voids your warranty". :)

Actually, neither of those things is what CL `unintern` does, though
I can see how people might come to believe that.  What it does is to
remove an existing symbol from the symbol table.  The symbol maintains
its properties, including its value, but any future attempt to refer
to a symbol of the same name will create an entirely new object,
since lookup in the symbol table will fail (and of course this new
symbol is undefined).

To put things another way, `unintern` mutates its argument from
interned to uninterned.  It's a dangerous thing to do, because it
corrupts Scheme/Lisp read-write equivalence.

-- 
John Cowan          http://www.ccil.org/~cowan        co...@ccil.org
If I have seen farther than others, it is because I am surrounded by dwarves.
        --Murray Gell-Mann



_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to