Как найти конкретный факт в Прологе? - PullRequest
1 голос
/ 02 апреля 2019

Я только начал изучать Пролог и столкнулся с некоторыми вопросами.

Учитывая местоположение, мне нужно найти все проекты, которые имеют это местоположение.То, что у меня есть, показано ниже, но оно продолжает печатать false, и я не уверен, почему.

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).

1 Ответ

1 голос
/ 02 апреля 2019

Имена предикатов Пролога атомы и, следовательно, должны начинаться со строчной буквы или записываться в одинарных кавычках.Переменные, с другой стороны, должны начинаться либо с заглавной буквы, либо со знака подчеркивания.Попробуйте:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...