我刚刚开始学习Prolog
,所以如果这有点天真,或者相当幼稚,请原谅我。我试图定义这个谓词无法在Prolog中定义谓词
| ?- times(M,N,Product) :- Product is M*N.
这给了我这个错误
uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0)
我使用GNU Prolog的。这里有什么错?
我刚刚开始学习Prolog
,所以如果这有点天真,或者相当幼稚,请原谅我。我试图定义这个谓词无法在Prolog中定义谓词
| ?- times(M,N,Product) :- Product is M*N.
这给了我这个错误
uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0)
我使用GNU Prolog的。这里有什么错?
假说,如果你想解释的执行过程中定义一个谓语或功能,您必须输入翻译的“用户”模式,通过键入:
['user'].
输入您的谓词后,你只需要离开这个“区域”,作为解释者的确认,你已经完成了编码,并且它可以开始将谓词编译成字节码 - 然后,你可以通过您的函数名称访问。
要离开“用户”模式,只需按ctrl + d
即可。
测试中都swipl和gprolog:
SWI-Prolog version 5.10.4
(GNU Prolog) 1.3.0
商祺!
检查用户手册8.7特别是动态子句管理:asserta/assertz。
接下来将帮助你在gprolog定义新的断言:
asserta的((倍(M,N,产品): - 产品是M * N))。
这很奇怪。我使用GNU Prolog(通过IDEOne)尝试了它,并没有发生错误)。 – RonaldBarzell
在规则之前输入'[user] .'。 – false
@false:你能不能详细一点? – OneMoreError