Re: miniPicoLisp Trasnients

2012-01-26 Thread Alexander Burger
Hi Doug,

 (de foo (x) x)
 ...
 (de baz (X) X)

Hmm, this looks very much as if the call

   isIntern(tail(y), Transient)

doesn't work for some reason. It seems that the two X symbols are not
the same.

Strange that it works for 'Internal' symbols.


 (setq V 456)
 at the top level (not in a definition) that works as expected

Again strange. It shouldn't matter how the symbol is used (globally or
bound locally).


 I wonder why it might not see X as a transient? (Er, I'm not even
 sure if transient is the the right terminology here.)

Yes, transient is correct.

I suspect that the above effects are partially random. The reason must
have to do with the index tree handling in isIntern() and intern().
Perhaps again some alignment or pointer-tag problem?

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


miniPicoLisp Trasnients

2012-01-25 Thread Doug Snead
Alex, 

I have a porting-related question for you. 

After more android testing I'm finding a problem with (transient) variables  
... (I think).

When I try a definition like this,

(de foo (x) x)

no problem,

(foo 123)

returns 123 as expected.


But when I try it this way:

(de baz (X) X)

(baz 123)

I should get 123 but instead I get:

X

However, if I try 

(setq V 456)

at the top level (not in a definition) that works as expected, and evaluating 
V later returns 456

I wonder why it might not see X as a transient?  (Er, I'm not even sure if 
transient is the the right terminology here.)

Does anything leap out at you there?  :-) 

Cheers,

Doug

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe