我有一个非常简单的方程,我希望能够在序言中求解:
A = B + C
我希望能够编写一个谓词来表达这种关系,它可以处理任何一个未实例化的参数。无需推广到更复杂的关系或方程。
myEquation(A, B, C) :-
...something...
我可以使用以下语义进行调用:
myEquation(A,1,2).
> A = 3.
myEquation(3,B,2).
> B = 1.
myEquation(3,1,C).
> C = 2.
有任何想法吗?使用算术运算符会产生许多“参数未充分实例化”错误。看起来求解任意方程组超出了大多数 Prolog 实现的范围,但我希望这个极其简单的方程是易于处理的。
不是特别花哨,但就是这样。如果您不是绝对的初学者,您也可以这样做:
myEquation(A, B, C):-
var(A),number(B),number(C) -> A is B+C;
var(B),number(A),number(C) -> B is A-C;
var(C),number(A),number(B) -> C is A-B;
A =:= B + C.
更新:
与约束逻辑编程相同:
:- use_module(library(clpq)).
myEquation(A, B, C):-
{A = B + C}.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)