在多项式中转换列表时,Prolog删除括号

时间:2018-11-12 14:58:24

标签: prolog

基本上,当我尝试将列表转换为多项式时,反之亦然,它总是带有括号(在多项式的情况下)。这是代码,不起作用的函数是poly2list,另一个仅用于定义一个单项/多项式。

pvars([x,y,z]).
pvar(X):-pvars(V),member(X,V).

polinomial(X) :- monomial(X).
polinomial(P+M) :- monomial(M), polinomial(P).

monomial(X) :- pvar(X).
monomial(N) :- number(N).
monomial(X) :- power(X),!.
monomial(K*X) :- coefficient(K), power(X),!.

coefficient(N) :- number(N).

power(X) :- pvar(X),!.
power(X^Y) :- pvar(X), integer(Y), Y>1,!.

poly2list(X,[X]) :- monomial(X),!.
poly2list(X+P,[X|Y]) :- monomial(X), poly2list(P,Y).

例如,当我问:     poly2list(X,[2*x^2,3,y]).

结果是:     X = 2*x^2+(3+y)

我正在尝试获得:     X = 2*x^2+3+y

预先感谢:)

0 个答案:

没有答案