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