我已经定义了! (阶乘)函数并将其注册为算术函数和运算符,以便我可以执行:A是6!。
现在我要定义!! (奇数的阶乘),但同样的方式 - 写条款,注册算术函数和运算符,调用A是7 !! - 结果是 SyntaxError:预期的运算符
如果可能,我该如何注册!!运营商?
是的,我意识到了,!通常是削减。
答案 0 :(得分:5)
!是一个所谓的独奏角色,你不能连续两个。如果不是,你不能写例如:
c :- !.
但反而必须写:
c :- ! .
因为“!”。否则将被解释为单个令牌。
另外,如果你让!是一个运算符,两个版本都是无效的语法(是的,SWI仍然接受它,但例如GNU Prolog没有)。你需要写:
c :- (!).
因为操作数的运算符需要被括起来。而不是!,使用例如“f”和“ff”,或者为您的用例拟合Unicode字符。