1

我正在使用 JPL 并向 Swi-Prolog 发起一些查询。该程序适用于所有查询,但只有一个。

此查询不起作用:

assert(like(X, Y) :- element(I, [1, 2, 3], X), element(I, [2, 3, 4], Y) ).

线程“主”jpl.PrologException 中的异常:PrologException:错误(uninstantiation_error(元素(_3,'.'(2,'.'(3,'.'(4,[]))),_4)),上下文( :(system, /(assert, 2)), '2-nd argument'))

如果我将查询放在 .pl 文件中(显然没有断言)并使用咨询运行它,工作正常!但如果我在控制台模式下输入查询,返回与 JPL 相同的错误。那么,问题出在哪里?

4

1 回答 1

1

你非常接近获得照明。它在控制台上也不起作用!然后您将尝试更改语法。了解 Prolog 算子模型,试试

?- 断言((like(X, Y) :- element(I, [1, 2, 3], X), element(I, [2, 3, 4], Y)))。

它会起作用的!

您的问题是运算符 (:-)/2 WRT 运算符 (,)/2 的优先级。

于 2013-06-22T23:26:02.893 回答