Если у меня есть термин H, который является либо в виде a > b
или a
где а и Ь константы (хотя и не обязательно назван а и б), как можно проверить форму H?Пролог шаблон
Ни H == (X > Y)
ни H =:= (X > Y)
не работает.
Если у меня есть термин H, который является либо в виде a > b
или a
где а и Ь константы (хотя и не обязательно назван а и б), как можно проверить форму H?Пролог шаблон
Ни 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, не должна иметь какой-либо разницы.
В SWI-Prolog я могу сделать H = (X> Y) '. Можете ли вы попробовать на вашей стороне? – nhahtdh
@nhahtdh это ответ, я думаю. '? - (1> 2) = (X> Y). X = 1, Y = 2.' – User
'X = (a> b) .' то' X = (_> _) 'будет true и может использоваться для проверки формы' X> Y' , Вам даже не нужны 'X' и' Y' (если вы не хотите знать их значения). Чтобы проверить, является ли 'X' просто атомом (например,' a'), используйте 'atom (X)'. – lurker