关于SWI-Prolog中输入和输出的基础

时间:2014-04-24 21:25:47

标签: prolog

有谁能告诉我在哪里可以找到关于Prolog输入和输出的精彩文档?我需要根据一些事实和规则向用户提出一些问题。例如:

best_team(bestteam).

在SWI-Prolog中询问:你能告诉客人最好的团队名称吗?

所以用户可以像bestteam那样编写,我的Prolog回答例如:你是对的!

这样的事情。

感谢。

1 个答案:

答案 0 :(得分:2)

显示的示例可以使用基本I / O例程write/1read/1nl/0完成:

best_team(bills).

main :-
    repeat,
    write('Can you guest what the best team name is?'), nl,
    read(X),
    best_team(X),
    write('You are right!'), nl, !.

| ?- main.
Can you guest what the best team name is?
giants.
Can you guest what the best team name is?
bills.
You are right!

yes
| ?-

这很容易扩展到一个"你错了!"错误回复的消息。一种方法是:

main :-
    repeat,
    write('Can you guest what the best team name is?'), nl,
    read(X),
    (   best_team(X)
    ->  write('You are right!'), nl, !
    ;   write('You are wrong!'), nl, fail
    ).

这将导致:

| ?- main.
Can you guest what the best team name is?
giants.
You are wrong!
Can you guest what the best team name is?
bills.
You are right!

yes
| ?-

如果您想输入标点符号,大写单词等输入,那么您需要使用其他谓词。这个主题有一个recent question posted