My my, I see it! Thanks Alex. On Thu, Dec 8, 2016 at 1:50 AM, Alexander Burger <[email protected]> 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:[email protected]?subject=Unsubscribe >
