2012-03-23 59 views
1

我已经定义! (阶乘)函数,并将其注册为算术函数和运算符,以便我可以执行:A是6 !.序言:宣布运营商

现在我想定义!! (单数的阶乘),但是同样的方法 - 写入子句,注册arithmetic_function和operator,调用A是7! - 结果 语法错误:运营商预计

我应该如何,如果可能的话,注册!运营商?

是的,我知道,!通常是削减。

+0

你可以发布你的谓词吗? – 2012-03-23 17:32:57

+0

我不认为这是一个好主意,定义一个!运算符(既不是!!运算符) – gusbro 2012-03-23 17:50:18

回答

4

!是一个所谓的独奏字符,你不能有两个连续。如果不是,你可以不写,例如:

c :- !. 

而是会必须写:“”

c :- ! . 

因为否则会被解释为单个标记。

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

c :- (!). 

因为操作数是操作数需要加括号。而不是!,例如使用“f”和“ff”,或者为你的用例安装Unicode字符。