Clu*_*ess 2 operator-overloading prolog iso-prolog
我已经定义了!(阶乘)函数并将其注册为算术函数和运算符,以便可以执行:A是6!。
现在我要定义!(奇数阶乘),但方法相同-编写子句,注册算术函数和运算符,调用A为7!-结果为SyntaxError:应为运算符
如果可能的话,我该如何注册!操作员?
是的,我知道,!通常是削减。
!是一个独奏字符,不能连续两个。如果不是,则无法编写例如:
c :- !.
Run Code Online (Sandbox Code Playgroud)
但必须写:
c :- ! .
Run Code Online (Sandbox Code Playgroud)
因为“!。” 否则将被解释为单个令牌。
另外,如果您愿意!如果是运算符,则这两个版本的语法都是无效的(是的,SWI仍然接受它,但是例如GNU Prolog不接受)。您需要写:
c :- (!).
Run Code Online (Sandbox Code Playgroud)
因为作为操作数的运算符需要放在括号中。代替!,例如使用“ f”和“ ff”,或将Unicode字符适合您的用例。
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |