Печать всех списков, включая пустые списки в прологе - PullRequest
0 голосов
/ 08 ноября 2018

Я очень новичок в прологе и застрял в этой ситуации довольно долго.

У меня есть эти правила

show_meal(Meals) :- findall(X, chosen_meal(X), Meals).
show_bread(Breads) :- findall(X, chosen_bread(X), Breads).
show_meat(Meats) :- findall(X, chosen_meat(X), Meats).
show_veggie(Veggies) :- findall(X, chosen_veggie(X), Veggies).
show_sauce(Sauces) :- findall(X, chosen_sauce(X), Sauces).
show_topup(TopUps) :- findall(X, chosen_topup(X), TopUps).
show_side(Sides) :- findall(X, chosen_side(X), Sides).
show_order(Meals, Breads, Meats, Veggies, Sauces, TopUps, Sides) :-
          show_meal(Meals), show_bread(Breads), show_meat(Meats), show_veggie(Veggies),
          show_sauce(Sauces), show_topup(TopUps), show_side(Sides).

Проблема, с которой я столкнулся, заключается в том, что если хотя бы 1 список пуст в show_order, например, если show_meat (Meats) пуст, пролог не сможет успешно печатать и даст мне и неопределенную процедуру.

ERROR: Undefined procedure: chosen_meat/1
ERROR:   However, there are definitions for:
ERROR:         chosen_meal/1

Есть ли способ преодолеть эту ситуацию? Я хотел бы знать, возможно ли все еще напечатать show_order с этим сценарием. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...