prolog - 打印所有列表,包括序言中的空列表
问题描述
我对 prolog 很陌生,而且我被这种情况困扰了很长一段时间。
我有这些规则
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).
我遇到的问题是,如果 show_order 中至少有 1 个列表为空,例如如果 show_meat(Meats) 为空,则 prolog 将无法成功打印并给我和未定义的过程。
ERROR: Undefined procedure: chosen_meat/1
ERROR: However, there are definitions for:
ERROR: chosen_meal/1
有没有办法克服这种情况?我想知道在这种情况下是否仍然可以打印 show_order 。谢谢你。
解决方案
推荐阅读
- ios - `Assert` View <(null):0x0> does not conform to UITextInput protocol
- python - Turbogears: multiple rendering the same method code for different HTML templates
- python - discord.py different outputs depens on user
- ios - Can't see navigation bar of UIPrintInteractionController(Swift) in Light mode
- nginx - Http 504/502 upon replication
- laravel-8 - laravel8 喷射流和强化。想在注册登录后设置不同的重定向
- azure - Azure Data Factory - On-prem data to ADF sink to on-prem database via express route
- excel - Userform opening in second place after running code
- gcc - 使用 gprbuild 将目标文件链接到项目
- reactjs - 单击下拉按钮时未显示下拉值 - Reactjs