I was looking for the source code for an early AI Parry project. This is complicated because the bulk of the code is written in MLISP , for which there is no working implementation (which I know). Instead, I used the language specification ( MLISP User Guide and earlier MLISP Technical Report ).
One curiosity that I could not explain is the IF-THEN-ELSE-ALSO construct, for example:
IF !LAMBDANAME(B) THEN ERROR("NONLAMBDA INTO REACT2",B) ALSO RETURN NIL;
The documentation I could find does not mention the ALSO clause for the IF , and I scratch my head a bit to figure out what it is for.
One possible suggestion I've seen is that it used the way the finally clause is used to handle exceptions in Java, that is, to run the cleanup code no matter how the IF completes. On the other hand, this does not explain statements that never cause exceptions, for example:
IF REACTTO='QUIT THEN REACTTO:=NIL ALSO TRACE_MEM:='NOSPECIALANAPH;
Any ideas?
source share