2014-01-12 4 views
0

Если у меня есть термин H, который является либо в виде a > b или a где а и Ь константы (хотя и не обязательно назван а и б), как можно проверить форму H?Пролог шаблон

Ни 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 = (_> _) 'будет true и может использоваться для проверки формы' 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, не должна иметь какой-либо разницы.