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