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