在prolog中打印自定义结果

时间:2012-10-14 19:19:10

标签: prolog


我正在制作一个简单的prolog程序。这是我的问题。

说我已经有一个事实fruit(apple).

我希望程序采用类似?- input([what,is,apple]).

的输入

并输出apple is a fruit

?-input([is,apple,a,fruit])之类的输入
而不是默认打印truefalse,我希望程序打印一些更好的词组,例如yesno

有人可以帮我这个吗?

我的代码部分如下:

input(Text) :-
   phrase(sentence(S), Text), 
   perform(S).
   %...
sentence(query(Q))     --> query(Q).

query(Query) --> 
   ['is', Thing, 'a', Category],
   { Query =.. [Category, Thing]}.

% here it will print true/false, is there a way in prolog to have it print yes/no, 
%like in other language: if(q){write("yes")}else{write("no")}
perform(query(Q))     :- Q.   

1 个答案:

答案 0 :(得分:0)

在Prolog中有一个构造if / else:

perform(query(Q)) :-
  (  Q
  -> write(yes:Q)
  ;  write(no)
  ), nl.

当我需要对输出格式进行更严格的控制时,我使用format。 不是很友好,但提供了大多数常见的选择...