我刚刚开始学习Prolog,并遇到了一些问题。
给定位置,我需要找到所有具有该位置的项目。我到目前为止所拥有的显示在下面,但是它一直打印错误,我不确定为什么。
Project('Website', 'Red', 'Paris').
Project('Computer', 'Green', 'London').
Project('CPU', 'Yellow', 'Paris').
Project('Console', 'Blue', 'Berlin').
find_project(location) :-
findall(X, (Project(X,_,Y), Y = location),L).
答案 0 :(得分:1)
Prolog谓词名称是 atoms ,因此必须以小写字母开头或写在单引号之间。另一方面,变量必须以大写字母或下划线开头。试试:
project('Website', 'Red', 'Paris').
project('Computer', 'Green', 'London').
project('CPU', 'Yellow', 'Paris').
project('Console', 'Blue', 'Berlin').
find_project(Location, Projects) :-
findall(Project, project(Project,_,Location), Projects).
通话示例:
| ?- find_project('Paris', Projects).
Projects = ['Website', 'CPU']
yes