Prolog 使用;大学"E;=&引用;返回函数布尔结果的元谓词?
我试图使用一个元谓词“=…”来返回一个值 下面我有两个例子,第一个有效 很好,但是,我无法使用第二个示例了解如何执行类似操作: 例1:Prolog 使用;大学"E;=&引用;返回函数布尔结果的元谓词?,prolog,Prolog,我试图使用一个元谓词“=…”来返回一个值 下面我有两个例子,第一个有效 很好,但是,我无法使用第二个示例了解如何执行类似操作: 例1: ?- Expression=..[+,2,3], Value is Expression. Expression = 2 + 3 Value = 5 yes 例2: ?- test(N):-N>=0. Term asserted ?- Term=..[test,-5], Value is Term. 这产生了一个错误, 我希望值为yes或true或1
?- Expression=..[+,2,3], Value is Expression.
Expression = 2 + 3
Value = 5
yes
例2:
?- test(N):-N>=0.
Term asserted
?- Term=..[test,-5], Value is Term.
这产生了一个错误,
我希望值为yes或true或1,
这样我就可以在IF语句中使用它了
如何使用“univ”“=…”运算符实现这一点?您不能使用
is/2
获取谓词调用的布尔值。改用call/1
:
?- Term =.. [test, -5], call(Term).
false.
?- Term =.. [test, 5], call(Term).
Term = test(5).
或者只是:
?- call(test, 5).
true.
?- call(test, -5).
false.
那么你的if-Then-else就变成了:
(Term =.. [test, -5], call(Term) ->
% then-part
;
% else-part
)
如果出于其他原因希望具体化结果值,通常的建议适用:
(Term =.. [test, -5], call(Term) ->
Value = true % or 1
;
Value = false % or 0, or fail
)