Function 如果sml中的x=整数,如何编写计算F(x)的函数

Function 如果sml中的x=整数,如何编写计算F(x)的函数,function,recursion,math,sml,Function,Recursion,Math,Sml,我试图编写一个递归函数,它以一个列表和一个整数作为参数,其中列表是多项式,即(valp=[5.0,4.0,0.0,1.0]=x^3+4x-5),整数参数是x,即x=2,因此f(2)=x^3+4x-5。这是我到目前为止所说的 valp=[5.0,4.0,0.0,1.0]; vala=2 fun eval(nil, a) = 0.0 | eval(x::xs, a:real) = x + (eval(xs, a) * a) eval(P, a); 运行代码后,它会给我以下

我试图编写一个递归函数,它以一个列表和一个整数作为参数,其中列表是多项式,即(valp=[5.0,4.0,0.0,1.0]=x^3+4x-5),整数参数是x,即x=2,因此f(2)=x^3+4x-5。这是我到目前为止所说的

valp=[5.0,4.0,0.0,1.0]; vala=2

fun eval(nil, a) = 0.0
    | eval(x::xs, a:real) = 
        x + (eval(xs, a) * a)
eval(P, a);
运行代码后,它会给我以下错误: stdIn:22.4-24.11错误:运算符不是函数[tycon不匹配] 接线员:真的吗 在表达上: (eval(xs,a)*a)eval

递归“假定”的工作方式是p=a+Qx,其中p是原始列表,a是x::xs中的x,Q是xs,x是传递的整数参数。
任何帮助都将不胜感激。谢谢

好吧,我想起来了。给你

val P = [~5.0, 4.0, 0.0, 1.0];
val a = 2.0;

fun eval(nil, a) = 0.0
  | eval(x::xs, a:real) = 
    x + (eval(xs, a) * a);

eval(P, a);

既然你回答了自己的问题(太好了!),那么这里有另一种写作方式:

fun eval ([], _) = 0.0
  | eval (x::xs, y) = x + eval (xs, y) * y

原来的问题有缺陷。如果f(x)=x是实数而不是整数,则应该是。