Я очень новичок в прологе и застрял в этой ситуации довольно долго.
У меня есть эти правила
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 с этим сценарием. Спасибо.