My my, I see it! Thanks Alex.

On Thu, Dec 8, 2016 at 1:50 AM, Alexander Burger <a...@software-lab.de>
wrote:

> Hi Bruno,
>
> > I've written something that redefines T to NIL, which surprises me
> > because I thought that T was protected from redefinition like that, and
> > I have not found a command in the code that looks like it is redefining
> T.
>
> It is true that 'T' is protected from simple, direct modifications like
>
>    : (set T 7)
>    !? (set T 7)
>    T -- Protected symbol
>
> but not from indirect, involved processings. PicoLisp always gives you
> enough
> power to shoot into your foot ;)
>
>
> > Could you check it out and see if its something in the code, or a bug in
> > the language?
>
> > # -> Mtx
> > (de animate (Mtx) # -> a matrix list (Mtx ..)
> > ...
> >       (actions (Mtx)) ) )
> > # (animate (mtx 4))
>
> The problem is that you call 'Mtx' as a function in (actions (Mtx)).
>
> The value of 'Mtx' is not a function
>
>    : (mtx 4)
>    -> ((T T T T) (NIL NIL NIL NIL) (NIL NIL NIL NIL) (NIL NIL NIL NIL))
>
> so what you end up doing is calling
>
>    '((T T T T) ...)
>
> which *looks* like a fuction but is not *meant* to be one. It binds 'T' as
> a
> formal parameter.
>
> ♪♫ Alex
> --
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
>

Reply via email to