0
如果我有一個項h其是形式 a > b
或 a
其中a和b是常數的(儘管不一定名爲a和b),如何檢查H的形式?Prolog的模式匹配
無論 H == (X > Y)
也不 H =:= (X > Y)
不起作用。
如果我有一個項h其是形式 a > b
或 a
其中a和b是常數的(儘管不一定名爲a和b),如何檢查H的形式?Prolog的模式匹配
無論 H == (X > Y)
也不 H =:= (X > Y)
不起作用。
你所需要的就是統一=/2
:
H = (X > Y)
至於你已經試過2層的替代品,他們是不是你想要的:
@Term1 == @Term2
True
如果Term1
相當於Term2
。變量只與共享變量相同。
+Expr1 =:= +Expr2
True
如果表達式Expr1
計算結果爲數字等於Expr2
。
說明取自swi-prolog.org文檔,但由於這些是ISO功能,所以ISO-complient實現應該沒有任何區別。
在SWI-Prolog中,我可以做'H =(X> Y)'。你可以嘗試一下嗎? – nhahtdh
@nhahtdh這個答案,我想。 (1> 2)=(X> Y)。 X = 1, Y = 2.' – User
'X =(a> b).'然後'X =(_> _)'將爲真,並且可以用於檢查形式'X> Y' 。你甚至不需要'X'和'Y'(除非你想知道它們的值)。要檢查'X'是否只是一個原子(如'a'),請使用'atom(X)'。 – lurker