Haskell多项式的求值

Haskell多项式的求值,haskell,Haskell,我有一个函数(eval)来计算多项式 eval coeffs value = ....... coefs是系数列表 value在数学中代表x 计算 3x^2+2x+1,x=20 coefs按相反顺序存储 当我像上面那样输入系数时,它是这样存储的[1,2,3] 像这样工作的程序和最后一部分是错误的(多项式的值): 这是我的密码 getCoeff 0 ls = do return ls getCoeff n ls = do putStr "What is the x^"

我有一个函数(
eval
)来计算多项式

eval coeffs value = .......
coefs
是系数列表

value
在数学中代表x

计算 3x^2+2x+1,x=20

coefs
按相反顺序存储

当我像上面那样输入系数时,它是这样存储的
[1,2,3]

像这样工作的程序和最后一部分是错误的(多项式的值): 这是我的密码

getCoeff 0 ls = do  return ls

getCoeff n ls = do  putStr "What is the x^"
            putStr (show(n-1))
            putStr " coefficient: "
            v <- getLine
            w <- getCoeff (n-1) ((read v :: Float):ls)
            return w


evalpoly = do   putStr "What is the degree of polynomial: "
        v <- getLine    
        l <- (getCoeff ((read v :: Int)+1) [])
        putStr "What value do you want to evaluate at: "
        x <- getLine    
        putStr "The value of the polynomial is: "
        putStr (show (polyEvaluate (l) (read x :: Float)))
        putStr "\n"

eval [] x = 0.0
eval (l) x = 
如何用系数和x值计算多项式?

一些提示

你可以很容易地写出一系列的幂

powers n = iterate (*n) 1

> take 10 $ powers 2
[1,2,4,8,16,32,64,128,256,512]
把这个和你的系数结合起来

> zip [1,2,3] $ powers 20 
[(1,1),(2,20),(3,400)]

您必须考虑如何将其更改为对的乘积之和(使用zipWith)

您的问题可能需要一些工作,看起来您的格式已关闭,您的措辞也不太清楚。你是否已经有了一个函数
eval
,或者你的任务是编写一个函数?我想这是你的家庭作业/练习,所以你应该先告诉我们你尝试了什么-你甚至已经设置了表示吗?给我们看一些代码:D可能重复的(注意链接会破坏完整的家庭作业)我如何使用系数和值列表制作评估函数?多评估的定义是什么?
> zip [1,2,3] $ powers 20 
[(1,1),(2,20),(3,400)]