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