Prolog 如何允许程序继续?
出现Prolog 如何允许程序继续?,prolog,Prolog,出现false后,如何使程序进入menu1/0 mylist([a,b,c]). myprog(X) :- mylist(L), member(X, L). go :- start_message,menu1. start_message :- write('This is a program.'),nl, write('Below are a list:'),nl, myprog(X), write(X),nl, fail. menu1 :-
false
后,如何使程序进入menu1/0
mylist([a,b,c]).
myprog(X) :- mylist(L), member(X, L).
go :- start_message,menu1.
start_message :-
write('This is a program.'),nl,
write('Below are a list:'),nl,
myprog(X),
write(X),nl,
fail.
menu1 :-
nl,write('Select operation:'),nl,
write('1. Input time'),nl,
write('2. Exit program'),nl.
以下是我一直坚持的观点:
go.
This is a program.
Below are a list:
a
b
c
false
删除
start\u消息最后一行中的fail
语句
start_message :-
write('This is a program.'),nl,
write('Below are a list:'),nl,
( myprog(X),
write(X),nl,
fail
; true ).
现在,当myprog/1
无法再成功时,控制转到true/0
并且start\u message/0
成功。您可以检查如何使用if-then-else。很好,从go:-start\u message,菜单1
?但我会提到如果那样的话。。。那应该行得通。我看得太快了。问题是start\u message/0
刚刚失败,所以go/0
也失败了。@TomasBy我真的很抱歉,但仍然对此一无所知<代码>开始消息:-write('这是一个程序')、nl、write('下面是一个列表:')、nl、myprog(X)、write(X)、nl、(fail->(menu1;go)).
这是我想到的,但仍然不起作用。将失败
置于该条件下是没有用的。这样你就不会得到列表中的所有元素。是的,我需要得到所有元素。我知道,我一直有问题。那些内置谓词…我必须了解更多。谢谢,你给了我很大的帮助!