menu :-
repeat,
write(' '),nl,
write(' 1.the number of hello '),nl,
write(' '),nl,
write('enter your choice:'),nl,
read(Choice), Choice>0, Choice =<6,
doit(Choice),Choice=6.
doit(1):- numberofhello(N).
doit(6):- abort.
my_list([hello,hello,hello]).
counthowmany(_, [], 0) :- !.
counthowmany(X, [X|Q], N) :- !, counthowmany(X, Q, N1), N is N1+1.
counthowmany(X, [_|Q], N) :- counthowmany(X, Q, N).
numberofhello(N) :- my_list(L),counthowmany(hello,L,N).
现在在编译缓冲区之后的代码中,当我询问Prolog菜单时出现菜单 有一个选择,当我在列表中输入1表示hello(my_list)时,我没有得到任何答案,我在编译时得到一个单例变量警告......
任何人都可以帮助我........
答案 0 :(得分:0)
“单例”变量与其他语言非常相似,警告“变量被赋予了一个永不使用的值”或“变量已被声明但从未使用过”。因此,您的子句必须在您的第一个N
子句中对doit
执行某些操作。您也可以通过允许doit(6) :- abort.
成功而没有使用剪切(menu
)的任何选择点来避免!
子句。
所以,试试:
menu :- repeat,
write(' '),nl,
write(' 1.the number of hello '),nl,
write(' '),nl,
write('enter your choice:'),nl,
read(Choice), Choice>0, Choice =<6,
doit(Choice), Choice=6, !.
doit(1):-
numberofhello(N),
write('Number of hello is = '), write(N), nl.
% Removed doit(6)...
...