【问题标题】:Prolog XPCE display predicateProlog XPCE 显示谓词
【发布时间】:2018-03-11 14:30:13
【问题描述】:

您好,我有一个程序(“专家程序”),用户可以在其中选择几个按钮选项,并且该程序在具有此选中选项的谓词汽车中搜索。在此之后,我希望在窗口中显示这个或多个谓词。这是几行程序。谓词格式:

auto(audi,a4,bialy,sedan,120).

auto(audi,a6,czerwony,sedan,160).

以及我希望显示的片段:

 X=auto(Marka,_,Kolor,Nadwozie,Km),
send(Cars,append(text(X))),

我试图将整个谓词分配给一个变量,但我可能做不到。如何以不同的方式查看这些数据?

编辑:

我发现类“findall()”很有帮助:

findall(Model,auto(Marka,Model,Kolor,Nadwozie,Km),X),
send(Cars,append(char_array(X))),

现在可以了,在控制台工作,但在 XPCE 中不行,Prolog 在控制台捕获错误:

错误:[线程 pce] char_array ->初始化:参数 1(文本):char_array' expected, found[a2,a3]'

现在呢?我认为错误在“char_array(X)”中,但为什么这不起作用?

【问题讨论】:

  • “显示谓词”或“将整个谓词分配给变量”是什么意思。例如,单个谓词子句可能是foo(A, B) :- bar(A), gah(B).,可以将其分配给变量X = :-(foo(A,B), (bar(A), gah(B))).,然后您可以稍后通过assertz(X) 断言该谓词。但我怀疑这不是你真正的意思。
  • 您是指“专家系统”而不是“专家程序”吗?
  • Yes false 我的意思是专家系统。潜伏者是的,你猜到了我的意图,但我需要在新窗口中显示这个变量

标签: prolog predicate assign xpce


【解决方案1】:

也许你可以试试

...
with_output_to(atom(X), write(auto(Marka,_,Kolor,Nadwozie,Km))),
send(Cars,append(text(X))),
...

【讨论】:

  • 这在 50% 中是正确的,有效,但结果我有我在单选按钮中选择的值,而不是来自匹配谓词的值
  • 它显示:自动为您选择:auto(audi,_50,white,sedan,80-150) 但我希望这种形式例如:自动为您选择:audi,a3,white,sedan ,80
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多