无法在Prolog中定义谓词

时间:2012-12-05 14:33:41

标签: prolog

我刚刚开始学习Prolog,所以请原谅我,如果这有点幼稚,或者说很天真。我正在尝试定义这个谓词

| ?- times(M,N,Product) :- Product is M*N.

给了我这个错误

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

我正在使用GNU Prolog。这里有什么错?

2 个答案:

答案 0 :(得分:6)

如错误所述,如果要在执行解释器期间定义谓词或函数,则必须通过键入以下内容进入解释器的“用户”模式:

['user'].

输入谓词后,你只需要离开这个“区域”,作为解释器你已经完成编码的确认,它可以开始将你的谓词编译成字节码 - 你就是然后,允许通过你的函数名访问。

要退出“用户”模式,只需按ctrl + d

在swipl和gprolog中测试过:

SWI-Prolog version 5.10.4
(GNU Prolog) 1.3.0

问候!

答案 1 :(得分:0)

检查用户手册8.7动态子句管理,特别是:asserta / assertz。

接下来将帮助您在gprolog中定义新的谓词:

断言((次(M,N,乘): - 乘积为M * N))。