haskell中的多项式评估

时间:2013-11-20 08:34:35

标签: haskell polynomial-math

我一直在尝试创建一个计算整数多项式的函数。

现在我有了

> type Poly = [Int]

> polyEval :: [(Float,Int)] -> Float -> [(Float,Int)]
> polyEval [] _ = []
> polyEval ((c,g):xs) n = map (\ (c,g) -> (c*n,g)) xs

如果我输入polyEval [] 3,则输出为[]。但是当我想计算像polyEval [3] 2这样的东西时,Hugs说

ERROR - Cannot infer instance
*** Instance   : Num (Float,Int)
*** Expression : polyEval [3] 2

为什么?

1 个答案:

答案 0 :(得分:3)

您承诺编译器将元组(Float, Int)的列表放到polyEval函数中,但是只放置3。 Haskell尝试将3投射到(Float,Int),但这是不可能的。如果你将polyEval称为polyEval [(1.0, 3)] 2,它将编译正常。

另一点 - 您在列表polyEval ((c,g):xs)的头部进行模式匹配,并在后续计算中删除结果。