查询在咨询中工作,但不在JPL和命令行中查询

时间:2013-06-22 23:08:03

标签: prolog swi-prolog jpl

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

此查询无效:

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

线程“main”中的异常jpl.PrologException:PrologException:error(uninstantiation_error(element(_3,'。'(2,'。'(3,'。'(4,[]))),_ 4)) ,context(:( system,/(assert,2)),'2-nd argument'))

如果我把查询放在一个.pl文件中(没有断言,没有断言)并通过咨询运行它,工作正常! 但是如果我在控制台模式下键入查询,则返回与JPL相同的错误。 那么,问题在哪里?

1 个答案:

答案 0 :(得分:1)

你非常接近照明。它不会在控制台上工作!然后,您将尝试更改语法。了解Prolog运算符模型,请尝试

? - 断言((如(X,Y): - 元素(I,[1,2,3,X),元素(I,[2,3,4,Y)))。

它会起作用!

你的问题是operator(: - )/ 2 WRT operator(,)/ 2的优先级。

相关问题