我正在使用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相同的错误。 那么,问题在哪里?
答案 0 :(得分:1)
你非常接近照明。它不会在控制台上工作!然后,您将尝试更改语法。了解Prolog运算符模型,请尝试
? - 断言((如(X,Y): - 元素(I,[1,2,3,X),元素(I,[2,3,4,Y)))。
它会起作用!
你的问题是operator(: - )/ 2 WRT operator(,)/ 2的优先级。