Hi Dexen,

> why is it that 
> (== "foobar" "foobar")
>  -> T
> 
> but
> (== "foobar" (pack "foo" "bar"))
>  -> NIL
> and even
> (== "foobar" (pack "foobar"))
>  -> NIL
> 
> 
> i assume that (== "foobar" "foobar") is basically artifact of reader 
> implementation -- that it returns the same transient symbol for same read 
> token, but otherwise two transient symbols with the same name don't have to 
> be 
> the same symbol. is that right?

Yes. ONLY the reader interns transient symbols in the transient symbol
table. And also only for a predictable time, because that table is
cleared by '====', or before/after 'load'. This is the intended
behavior, and that's why these symbols are called "transient".

All other functions producing transient symbols (like 'pack') do not
intern the resulting symbols. This would introduce a lot of overhead,
and we would also lose the advantage of the uniqueness of transient
symbols.

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to