【发布时间】: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