Sorry i did not test it well you are right. Will be more carefull about it
next time.
Am 18.12.2016 16:13 schrieb "Alexander Burger" <a...@software-lab.de>:

> On Sat, Dec 17, 2016 at 11:51:04PM +0100, Joh-Tob Schäg wrote:
> > There is no (efficient) way to find the symbol (1 2 3) is bound to. So
> > would you have to know the symbol all the time.
> >
> > (de add-to-global-list (Sym Value)
> >    (setq Sym (cons Value Sym)))
> > (de delete-from-global-list (Sym)
> >    (setq Sym (cdr Sym)))
>
> Note that this will not work as one might expect. It sets the value of the
> symbol 'Sym', not of the symbol it is bound to. You need a level of
> indirection
> using 'set' instead of 'setq', and 'val'.
>
>    ...
>    (set Sym (cons Value Sym)))
>    ...
>    (set Sym (cdr (val Sym))) )
>
>
> > But i guess you do not want to pass the symbol around. But the function
> > still does need to what global symbol to work on. You can either use
> > Picolisp object system for that or you can implement it on your own.
> >
> > (de return-list-handler (@Symbol)
> >    (fill '((Op-code . Operands)
> >       (cond
> > ((= Op-code "add") (setq @Symbol (cons (car Operands) @Symbol)))
> > ((= Op-code "sort") (setq @Symbol (sort @Symbol)))
> > ((= Op-code "readcar") (car @Symbol))
> > ((= Op-code "readcdr") (cdr @Symbol))
> > ((= Op-code "del") (setq @Symbol (cdr @Symbol)))))))
>
> Same here. You need 'val' in some places, e.g.
>
>    (sort @Symbol) -> (sort (val @Symbol))
>
> Also, I would recommend 'case' instead of 'cond' here
>
>    (case Op-code
>       ("add" ..)
>       ("sort" ..)
>       .. )
>
> (For all the above, I'm still not able to detect any practical sense or
> purpose,
> but that's up to Dean perhaps ;)
>
> - Alex
> --
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
>

Reply via email to