У меня есть основа c База фактов Пролога, состоящая из закусок, сторон и ингредиентов. Я sh напишу предикат meal(X,Y)
, который принимает либо обед / ужин для параметра x и возвращает вход и обе стороны. т.е. meal(lunch,X)
возвращает бутерброд, чипсы, лимонад.
/* Facts */
entre(lunch, sandwich).
entre(dinner, spaghetti).
side(lunch, chips).
side(lunch, lemonade).
side(dinner, bread).
side(dinner, greentea).
ingredient(chips, potato).
ingredient(chips, salt).
ingredient(lemonade, lemon).
ingredient(lemonade, sugar).
ingredient(bread, egg).
ingredient(bead, flour).
ingredient(greentea, green).
ingredient(greentea, tea).
/* Rules */
meal(X,Y) :- entre(X,Y) ; side(X,Y).
Я не могу заставить его работать, поскольку он только возвращает
| ?- meal(lunch, X).
X = sandwich ?
yes