在SWI-PROLOG中用自定义运算符定义常量
Oct 11th, 2008 作者 hugsnow
通过查看帮助,我发现在SWI-PROLOG中无法定义常量,而有些PROLOG版本是可以的,如以前DOS版本的Turbo PROLOG。但是在书写程序时没有常量就很不方便了,如果使用字面常量,一是程序会使程序很难理解,二是修改的时候很不方便,凡是程序中出现这个常量的地方都要修改,极有可能出现遗漏;如果把常量定义成一元谓词如pi(3.14),那么使用的时候又要先调用一次谓词,如:pi(PI),s is Pi*R*R.显得也很多余。
那么有没有办法在SWI-PROLOG中定义常量呢?当然可以,比如swi-prolog就定义得有符号pi和e,下面就以自定义符号pie=pi+e为例
pie(X):-X is pi+e.
:- arithmetic_function(pie/0).
装入这个文件后,就可以在表达式中使用使用这个常量pie了。
arithmetic_function的功能就是自定义运算符,在定义是需指明自定义函数的个数;在定义谓词时,最后一个个体变元必须是输出参数,用于保存结果。所以在arithmetic_function谓词中指明的参数个数应该比实际的变元个数少1。