我正在尝试在Prolog中进行简单的两位数乘法。当我最初启动Prolog而不加载任何文件时,我可以输入:
X is 2 * 2.
我得到4作为答案。但是当我通过使用我的代码打开我的文件来启动Prolog时,上述语句不再起作用了。它说:
ERROR: toplevel: Undefined procedure: (*)/2 (DWIM could not correct goal)
当我加载代码时,我得到以下内容:
Warning: The predicates below are not defined. If these are defined
Warning: at runtime using assert/1, use :- dynamic Name/Arity.
Warning:
Warning: */2, which is referenced by
Warning: c:/filepath/project.pl:98:21: 1-st clause of multiply/3
为什么在我不加载代码时乘法工作,但在加载代码时不起作用?这是我用于乘法的代码的一部分:
:-dynamic(multiply/3).
multiply(X, Y, Z) :- Z is X * Y.
上面两行是我的代码中唯一提到的乘法。 我花了几个小时寻找答案而失败了。也许我用来搜索的关键字不够具体,但很难找到Prolog的答案。难道我做错了什么?这个问题是阻止我完成项目的唯一因素,如果发布这个项目太长而无法使用。
答案 0 :(得分:2)
我们项目的一部分是修改教授给出的代码。教授包括以下未在任何地方使用过的专栏:
<script>
$(function () {
$('.helpicon').on('click', function () {
if ($(this).hasClass('selected')) {
$(this).siblings('.helpbox').slideToggle();
} else {
$(this).addClass('selected');
$(this).siblings('.helpbox').slideToggle();
}
return false;
});
});
</script>
删除时,'is'位于:
:-op(150,xfx,is).
工作并显示正确的答案。