2

我已经定义了!(阶乘)函数并将其注册为算术函数和运算符,以便我可以执行:A 是 6!。

现在我想定义!(奇数的阶乘),但方法相同 - 编写子句,注册算术函数和运算符,调用 A 是 7!- 导致 SyntaxError: Operator expected

如果可能,我应该如何注册!操作员 ?

是的,我意识到,!通常是切割。

4

1 回答 1

5

!是所谓的solo角色,不能连续两个。如果不是,你不能写例如:

c :- !.

但改为必须写:

c :- ! .

因为 ”!。” 否则将被解释为单个标记。

另外,如果你让!是一个运算符,两个版本的语法都是无效的(是的,SWI 仍然接受它,但例如 GNU Prolog 不接受)。你需要写:

c :- (!).

因为作为操作数的运算符需要用括号括起来。代替 !,使用例如“f”和“ff”,或者为您的用例拟合 Unicode 字符。

于 2012-03-23T18:12:56.093 回答