Создание предиката из списка - PullRequest
1 голос
/ 04 мая 2011

Я хочу сделать предикат из этого списка. У меня есть список [яблоко, апельсин]. Я пытаюсь сделать этот предикат --->

фрукты (яблоко, апельсин).

Есть идеи?

1 Ответ

4 голосов
/ 04 мая 2011

Вы можете преобразовать список в термин, функтор которого является главой списка, используя =.. (также называемый Univ).Например:

?- a(b) =.. [a, b].
true.

Вы можете превратить термин в факт в базе данных Prolog, используя assert/1.

. Таким образом, решение вашего вопроса будет таким:

?- List = [apple, orange], Term =.. [fruits | List], assert(Term).
List = [apple, orange],
Term = fruits(apple, orange).

Теперь вы можете запросить ваш новый факт, чтобы убедиться, что он там есть:

?- fruits(X, Y).
X = apple,
Y = orange.
...