无法在Prolog中定义谓词

无法在Prolog中定义谓词,prolog,Prolog,我刚刚开始学习Prolog,如果这有点幼稚,请原谅我,或者说是太幼稚了。我试图定义这个谓词 | ?- times(M,N,Product) :- Product is M*N. 这给了我这个错误 uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0) 我正在使用GNU Prolog。这里的错误是什么?正如false所说,如果您想在解释器执行期间定义谓词或函数,必须输入解释器的“用户”模式: ['user

我刚刚开始学习
Prolog
,如果这有点幼稚,请原谅我,或者说是太幼稚了。我试图定义这个谓词

| ?- times(M,N,Product) :- Product is M*N.
这给了我这个错误

uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0)

我正在使用GNU Prolog。这里的错误是什么?

正如false所说,如果您想在解释器执行期间定义谓词或函数,必须输入解释器的“用户”模式:

['user'].
键入谓词后,您只需离开这个“区域”,作为对解释器的确认,即您已经完成了编码,解释器就可以开始将谓词编译为字节码,然后允许您通过函数名访问字节码

要离开“用户”模式,只需按
ctrl+d

在swipl和gprolog中测试:

SWI-Prolog version 5.10.4
(GNU Prolog) 1.3.0

问候

查看用户手册8.7动态条款管理,尤其是:asserta/assertz

下一步将帮助您在gprolog中定义新谓词:


资产((乘以(M,N,乘积):-乘积是M*N))。

这很奇怪。我用GNU Prolog(通过IDEOne)试过了,没有出现错误。在规则之前输入
[user]。
。@false:您能再详细一点吗?