我刚刚开始学习Prolog
,如果这有点天真,或者说太天真,请原谅我。我正在尝试定义这个谓词
| ?- times(M,N,Product) :- Product is M*N.
这给了我这个错误
uncaught exception: error(existence_error(procedure,(:-)/2),top_level/0)
我正在使用 GNU Prolog。这里有什么问题?
我刚刚开始学习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 中定义新的谓词:
asserta( ( times(M,N,Product) :- 产品是 M*N ) )。