Я пытаюсь определить предикат, который получает один термин со свободными переменными и возвращает список сопоставлений этих переменных, например, если база данных
Я пытался сделать это с помощью findall/3, но не могу найти способ запросить свободные переменные и их возможные значения. Если это поможет, я использую swiprolog. Спасибо.
Согласно фактам в вашей БД, я думаю, что второй пример должен быть Maps = [[[X,0], [Y,1]], [[X,1], [Y,1]]] gusbro 20.07.2011
Вы правы, я исправлю это прямо сейчас. Извините, я мало спал, пытаясь решить эту проблему. ailnlv 20.07.2011
Вот решение похожей проблемы. Вместо списка ответов, представленного в виде списка с записями [V,term] для каждой переменной, запрос goal_answers(Goal, Answerp) находит пару Vars-Terms.
Есть проблема с тем, что вы хотите сделать. Удобное для пользователя имя, которое вы даете переменным (например, X, Y), известно анализатору верхнего уровня, но "теряется" внутри вашей программы. В этом фрагменте будут перечислены все привязки, но переменные будут иметь общие имена: