Got it - I'll just use non-transient symbols like 'A instead :) Thanks Alex! Kashyap
On Sat, Sep 23, 2023 at 12:02 PM Alexander Burger <picolisp@software-lab.de> wrote: > Hi Kashyap, > > > kashyap@CPC-ckk-S75640M:~$ cat a.l > > (de add (N D) > > (put 'STORE N D) ) > > (add "A" 10) > > (add "B" 20) > > (prinl (get 'STORE "A")) > > (prinl (get 'STORE "B")) > > kashyap@CPC-ckk-S75640M:~$ pil a.l > > 10 > > 20 > > : (get 'STORE "A") > > -> NIL > > : version > > -> 274406 > > > > Shouldn't I get 10 as a result of (get 'STORE "A") from the REPL? > > No, because transient symbols like "A" and "B" have a file-local scope > (just > like symbols in the 'private' namespace). > > Property functions like 'put' and 'get' access the value by the symbol > itself > (using pointer equality, '=='), not by the name. So the "A" in > > (get 'STORE "A") > > in the REPL *after* the file is loaded is another symbol than the "A" in > the > file *while* it is loaded. > > ☺/ A!ex > > -- > UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe >