2014-01-12 33 views
0

如果我有一个项h其是形式 a > ba 其中a和b是常数的(尽管不一定名为a和b),如何检查H的形式?Prolog的模式匹配

无论 H == (X > Y) 也不 H =:= (X > Y) 不起作用。

+1

在SWI-Prolog中,我可以做'H =(X> Y)'。你可以尝试一下吗? – nhahtdh

+0

@nhahtdh这个答案,我想。 (1> 2)=(X> Y)。 X = 1, Y = 2.' – User

+0

'X =(a> b).'然后'X =(_> _)'将为真,并且可以用于检查形式'X> Y' 。你甚至不需要'X'和'Y'(除非你想知道它们的值)。要检查'X'是否只是一个原子(如'a'),请使用'atom(X)'。 – lurker

回答

1

你所需要的就是统一=/2

H = (X > Y) 

至于你已经试过2层的替代品,他们是不是你想要的:

@Term1 == @Term2

True如果Term1相当于Term2。变量只与共享变量相同。


+Expr1 =:= +Expr2

True如果表达式Expr1计算结果为数字等于Expr2

说明取自swi-prolog.org文档,但由于这些是ISO功能,所以ISO-complient实现应该没有任何区别。