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