Hi all,

the current version of PicoLisp (3.1.3.5) introduces a critical change
in the syntax of Pilog calls to embedded Lisp expressions.

As some of you may know, until now a syntax like

   (@X + 3 4)

would cause Pilog to evaluate the CDR (+ 3 4) as a Lisp expression, and
unify the result with the Pilog variable '@X'.

But this syntax has a drawback: If the variable '@X' is already unified
in the current environment, then Pilog doesn't see an expression (@X + 3
4) but, say, (7 + 3 4). This isn't recognized as a Lisp/Pilog
expression, because the CAR isn't a pattern symbol. As a result, strange
things might happen because this may be handled by Pilog in a completely
unexpected way, depending on what the CAR happens to be.


Thus, now the syntax was changed, and expects a '^' (i.e. the caret
symbol) in the CAR:

   (^ @X ..

A second - minor - drawback was that the Lisp expression in the CDR
doesn't optically appear as a lisp expression. So, while we are at it, a
second syntax change was introduced, taking the CDR not as an 'exe' but
as a 'prg'. This has - besides being more in line with other PicoLisp
functions - the advantage that you may write more that one expression in
this place for possible side effects.

In total, the new syntax is now

   (^ @X (+ 3 4))

I have changed this in a four versions (pil64, pil32, ersatz and mini),
and all related files. Hope I didn't overlook anything.

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

Reply via email to