我是prolog的新手,我想用prolog + java编写wampus AI,试图用java做prolog和GUI的逻辑,但我卡住了,而且是一个非常基础的级别。
基本上,我的知识库中有这样的东西
parent(john, sarah).
我想知道谁是莎拉的父母(父母(X,莎拉)),但我不能,因为我不能否认萨拉这个词!我可以定义这样的术语
VariableTerm("X"); // for variable
IntegerTerm // for integer
FloatTerm // for float
但是没有一个用于sara -string/ atom - Term的(实际上有and atom,但它是受保护的)。我觉得在我的在线自我辅导中,我错过了一些非常基本的东西。我已经翻了几遍gnu for prolog文档,但还是找不到答案。
附言:使用IntelliJ Idea集成开发环境
更新1:
我转到了swi-prolog (jpl),这样我就可以在那里做我的工作了,但在将库添加到我的java项目后,我甚至无法让代码运行,修复了其中的两个错误,但它只是一个接一个的错误(目前停留在java上: package org.jpl7不存在),谷歌/stackoverflow解决方案将无法工作
发布于 2018-02-06 09:37:50
你想要的是通过说parent(sarah, X)
来询问莎拉的父母是谁,它将变量X与莎拉的已知父母约翰联系起来。然后,您可以将另一个目标链接到该目标后面,该目标以parent(sarah,X),parent(X,Y).
统一的形式询问谁是X的父项,试图使两个术语相同,否则将返回false。X= john,所以查询变成了parent(sarah,john),parent(john,Y).
。
查看有关统一工作原理的参考资料:Learn Prolog Now!: Unification
https://stackoverflow.com/questions/48637276
复制相似问题