MLISP 中的 ALSO 关键字是什么意思?

What does the ALSO keyword mean in MLISP?

我一直在查看 source code for the early AI project Parry recently. It's tricky because the bulk of the code is written in MLISP, for which no working implementation still exists (that I know of). Instead, I've been using the language specification (MLISP Users' Manual and the earlier MLISP Technical Report)。

我无法解释的一个好奇心是 IF-THEN-ELSE-ALSO 结构,例如:

IF !LAMBDANAME(B) THEN ERROR("NONLAMBDA INTO REACT2",B) ALSO RETURN NIL;

我找到的文档没有提到 IF 语句的 ALSO 子句,我有点摸不着头脑想弄明白它的作用。

我看到的一个似是而非的建议是,它使用 finally 子句在 Java 中用于异常处理的方式,即 运行 清理代码,无论IF 终止。另一方面,这并不能解释似乎永远不会引发异常的语句,例如:

IF REACTTO='QUIT THEN REACTTO:=NIL ALSO TRACE_MEM:='NOSPECIALANAPH;

有什么想法吗?

IF e1 THEN a ALSO b ALSO c ELSE d ALSO e ALSO f

就是

(COND (e1 a b c) (T d e f))

参见 David Canfield Smith,1970 年的 MLISP