我正在尝试使用 Prolog 来实现将两个多项式相乘的多项式乘法。下面是SML中给出的代码,但我需要Prolog中的代码。SML 的测试解决方案是 poly_mult([1.0, 5.0, 1.0], [3.0, ~10.0, 15.0]);并将返回 val it = [3.0,5.0,~32.0,65.0,15.0] : real list 我尝试在 Prolog 中编写代码,但我所得到的不正确。有人可以帮忙吗?谢谢!
在SML中
fun poly_add (M,nil) = M
| poly_add (nil,N) = N
| poly_add ((m:real)::mr, n::nr) = (m+n)::poly_add(mr,nr);
fun scalar_mult (nil,m) = nil
| scalar_mult((m:real)::mr,n) = (m*n)::scalar_mult(mr,n);
fun poly_mult (M,nil) = nil
| poly_mult (M,n::nr) = poly_add (scalar_mult(M,n), 0.0::poly_mult(M,nr));
Run Code Online (Sandbox Code Playgroud)
我在 PROLOG 中有什么
poly_add(Constant,[],Constant) :- !.
poly_add([],Constant2,Constant) :- !.
poly_add([Head1 | Head2], [Tail | Tail2], [HeadSum |TailSum]) :-
HeadSum is Head + …Run Code Online (Sandbox Code Playgroud) prolog ×1