在prolog中创建菜单?

时间:2014-02-25 08:59:46

标签: prolog

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)时,我没有得到任何答案,我在编译时得到一个单例变量警告......

任何人都可以帮助我........

1 个答案:

答案 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)...

...