> 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)
: (pre? "ab" "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
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.