Итак, допустим, у меня есть следующий в базе данных Пролога:Обратный поиск в Прологе? (Как я нахожу все, что верно в отношении X?)
person(john).
person(mary).
happy(john).
ясно, что если я хочу, чтобы перечислить все человек, я могу тип:
person(X).
Но, если я хочу найти все, что касается Джона? Я не могу сделать:
X(john).
Но эффект, который я хотел бы, чтобы быть в состоянии поставить в «Джон» и получить обратно «человек» и «счастливый».
Существует явно другой способ, которым я мог бы хранить свою информацию:
is(person, john).
is(person, mary).
is(happy, john).
И потом, я могу сделать:
is(X, john).
Но я теряю некоторую выразительность здесь. Я действительно хотел бы иметь возможность сделать что-то вроде:
X(john).
Любые идеи?
Спасибо!
Интересно. Благодарю. Я полностью понимаю, что это не типичный прецедент для Пролога, но наверняка должен быть какой-то способ сделать то, что я прошу, верно? Это очень важная часть информации, которая закодирована в базе данных, должен быть способ ее запроса - «Что такое X?» – MikeC8
Как мог Prolog, возможно, ответить на этот вопрос, даже синтаксически? Нет никакого способа, чтобы Пролог мог разумно собрать информацию от X (john) и жениться (john, ..). Даже из вашей базы данных, например, вы можете почувствовать, что факты было бы по строкам истинного (женатого (john, mary)) и истинного (person (john)), почти идентичного кодирования тому, которое я дал. Возможно, с какой-то другой нестандартной функцией вы могли бы спросить:? true (X), содержит John (X), рекурсивно анализируя X. Но я не знаю, как построить этот «содержащий». Тогда действительно может быть синтаксический ответ, подобный «X = замуж (john, mary)». – ShiDoiSi