在Prolog查询中隐藏变量

Ins*_*ath 7 lambda prolog

我正在与prolog一起工作,涉及机场数据库(它有机场城市,航班链接包括机场税和持续时间),第一个问题涉及查询.我们应该写一个Prolog查询来回答一个问题,我已经知道如何回答问题是问题是Prolog正在输出更多我想要的信息.我写的查询是:

flight(X,_,Y,_,N), N > 180. 
Run Code Online (Sandbox Code Playgroud)

基本上它所做的就是列出所有城市(X是原始航班,Y是目的地航班,N是持续时间).我想要X和Y,但我不想要N.我能想到让这个工作的唯一方法就是将这个查询包装在一个规则中并让它显示X和Y,但是因为我们不应该写规则我我不知道怎么解决这个问题.我真的不想要一个明确的答案,可能只是暗示或其他什么.

Cap*_*liC 3

在可能的情况下,我更喜欢使用表达式来压缩 IO

?- forall((flight(X,_,Y,_,N), N > 180),
           writeln((x=X,y=Y))).
Run Code Online (Sandbox Code Playgroud)

例如,使用不同的发电机

?- forall((member(X,"12"),member(Y,"ab")),writeln((x=X,y=Y))).
x=49,y=97
x=49,y=98
x=50,y=97
x=50,y=98
true.
Run Code Online (Sandbox Code Playgroud)

当然,正确缩进表格格式/2 会更好......

编辑 也许我误解了这个问题,假设你已经考虑过

query(X,Y) :-
  flight(X,_,Y,_,N), N > 180.
Run Code Online (Sandbox Code Playgroud)