我有以下列表列表:
L = [[Q,w,E,],[Q,w,Z,r],[A,s,D,f]]
我知道前两个,我需要得到其余的。 例如,我有Q,w,我需要得到Z,r或E,r。 我想以某种方式告诉我优先考虑我总是希望touple包含Z,但如果不存在则给我E,r。
我试过了:
member([Q,w,Z,VB],[[Q,w,E,o],[Q,w,Z,r],[A,s,D,f]]).
但总是给我Z = E, VB = o
答案 0 :(得分:0)
首先你需要知道Prom与变量之间的区别,你可以阅读它们的语法here
现在,如果你想要一个以大写字母开头的原子列表,你必须用单引号将它们括起来,否则prolog会将它们解释为变量。
现在,如果您修复了咨询的语法,您将得到以下结果:
?- member(['Q',w,Z,VB],[['Q',w,'E',o],['Q',w,'Z',r],['A',s,'D',f]]).
VB = o,
Z = 'E'
VB = r,
Z = 'Z'
false
注意在这种情况下,我在单引号中包含所有以大写字母开头的原子,Z
谓词的第一个参数中的VB
和member/2
除外在这种情况下,它们作为变量由prolog实例化,其中包含完成此案例所需的原子。