вопрос в том, что я должен напечатать все минимальные закуски, затем минимальное основное, а затем минимальное десертное.
Я написал это
starter( greenSalad,10).
starter( seserSalad,20).
starter( tomatoSalad,10).
main( chicken,40).
main( pizza,30).
main( pasta,30).
dessert( raspberryCake,30).
dessert( fruitCake,20).
dessert( applepie,20).
min(Head,Tail,Head):- Head<Tail.
min(Head,Tail,Tail):- Tail<Head.
findmin([Only], Only).
findmin([Head|Tail], Minimum) :- findmin(Tail, TailMin), Minimum is
min(Head, TailMin).
**findMeal**2:-findall(Sp,starter(_,Sp),SList),findmin(SList,Spm),printStarter2(Spm),
findall(Mp,main(_,Mp),MList),findmin(MList,Mpm),printMain2(Mpm),
findall(Dp,dessert(_,Dp),DList),findmin(DList,Dpm),printDessert2(Dpm).
printStarter2(Spm):-starter(S,Spm),write(S),nl,fail.
printMain2(Mpm):-main(M,Mpm),write(M),nl,fail.
printDessert2(Dpm):-dessert(D,Dpm),write(D),nl,fail.
ПРОБЛЕМА: это дает все минимальные стартеры, затем останавливается без предоставления минимального основного и десерта