Prolog中的模式匹配

Prolog中的模式匹配,prolog,Prolog,假设我有一条规则: andR( conj(C,D) ). 因此,我希望它与诸如conj(x,y)之类的项目匹配,这很好。然而,你如何使它与更复杂的东西相匹配,例如(即,再次结合,但不是两个原子的结合): 因为Prolog与我的andR/1谓词不匹配,因为它解释了一个逗号,并认为我尝试用两个参数调用了一个/1谓词 有什么想法吗,伙计们?这让我困惑了一段时间 你不需要一个额外的conj围绕顶层conj和not?嘿,我真蠢,是的,声明错了!谢谢:)。 andR( conj(not(conj(not(

假设我有一条规则:

andR( conj(C,D) ).
因此,我希望它与诸如
conj(x,y)
之类的项目匹配,这很好。然而,你如何使它与更复杂的东西相匹配,例如(即,再次结合,但不是两个原子的结合):

因为Prolog与我的
andR/1
谓词不匹配,因为它解释了一个逗号,并认为我尝试用两个参数调用了一个/1谓词


有什么想法吗,伙计们?这让我困惑了一段时间

你不需要一个额外的
conj
围绕顶层
conj
not

嘿,我真蠢,是的,声明错了!谢谢:)。
andR( conj(not(conj(not(a),c)),c),not(a) ).