pre?, minor difference between 32-bit and ersatz

2014-09-13 Thread Jon Kleiser
Hi,

I just noticed that in 32-bit PicoLisp (pre? 12 1234) returns the symbol 
1234, while in ersatz the same (pre? 12 1234) returns the number 1234. The 
latter is what the docs describes.
I have not tested this in 64-bit PicoLisp.

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


Re: pre?, minor difference between 32-bit and ersatz

2014-09-13 Thread Alexander Burger
Hi Jon,

 I just noticed that in 32-bit PicoLisp (pre? 12 1234) returns the
 symbol 1234, while in ersatz the same (pre? 12 1234) returns the
 number 1234. The latter is what the docs describes.

Well, this is indeed not very clear. Strictly speaking, the docs define
the return value only for symbolic arguments:

   : (pre? ab 'abcd)
   - abcd

   : (pre? ab abcd)
   - abcd

However, most functions that expect a symbol name to operate upon,
silently convert non-symbolic arguments to transient symbols internally
before performing the desired task.

This has purely practical reasons. The argument may also be a number or
a list (e.g. a 'chop'ped symbol), so that it it not necessary to 'pack'
it explicitly. You can, for example, (open num) on a numeric file name
(e.g. as the result of a computation).

You find many of such cases in if you look for 'evSym' (in the C
sources) or 'evSymX_E', 'evSymY_E', 'evSymE_E, or 'xSymE_E' (in the
assembly sources).


Ersatz is a bit wrong in this regard. But due to the different internal
mechanisms this doesn't work out well.


 I have not tested this in 64-bit PicoLisp.

It gives the same results as pil32.

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