Чтобы получить полный список городов, доступных с этим набором правил, следующий запрос перечислит все ваши города в переменной X (протестировано в SWI-Prolog):
city_in(X, _).
Чтобы преобразовать города водин список, используйте findall/3
(результат будет Xs
):
findall(X, city_in(X, _), Xs).
Если вы пытаетесь получить список городов, принадлежащих какой-либо организации, вы можете выдать следующее иполучите список стран и городов, которые существуют в организации:
belongs_to(Country, _), city_in(X, Country).
Опять же, для списка ответов с findall/3
:
findall(X, (belongs_to(Country, _), city_in(X, Country)), Xs).
Список столиц, которыепринадлежат какой-либо организации (указанной в переменной City):
belongs_to(Country, _), city_in(City, Country), capital(City).
И, для списка городов, принадлежащих организации с findall/3
:
findall(City, (belongs_to(Country, _), city_in(City, Country), capital(City)), Cities).
Вывод вышеуказанного:
?- findall(City, (belongs_to(Country, _), city_in(City, Country), capital(City)), Cities).
Cities = [prague, bern, london].