Haskell无法编译
正如我所遇到的问题一样,在纸上所有的东西都应该工作,但是编译器给出了一个我无法理解的错误Haskell无法编译,haskell,types,polynomials,Haskell,Types,Polynomials,正如我所遇到的问题一样,在纸上所有的东西都应该工作,但是编译器给出了一个我无法理解的错误 data Polynom = Polynom[Double] deriving Show calcPolynom :: Double -> Polynom -> Double calcPolynom _ [] = 0.0 calcPolynom _ Polynom [] = 0.0 calcPolynom n Polynom[h:ts] = h + n* Polyn
data Polynom = Polynom[Double]
deriving Show
calcPolynom :: Double -> Polynom -> Double
calcPolynom _ [] = 0.0
calcPolynom _ Polynom [] = 0.0
calcPolynom n Polynom[h:ts] = h + n* Polynom[ts]
给出错误“构造函数'Polynom'应该有1个参数,但没有给出任何参数”。
但我确实这样做了,而且还需要为空多项式定义它
有人能帮忙吗?我对哈斯克尔真的很陌生,我真的很感激任何帮助:)
附加信息:我希望多项式是一个双重列表,即。
2x³-1.4x²+2.5=[2.5,0,-1.4,2]试试看
calcPolynom _ (Polynom []) = 0.0
calcPolynom n (Polynom (h:ts)) = h + n * calcPolynom n (Polynom ts)
当您尝试模式匹配构造函数时,必须将其括在括号中。这不仅适用于多项式数据类型,还适用于列表<代码>[h:ts]与您期望的没有什么不同,它只与一个元素(即列表)的列表([[?]]
)匹配。最后,必须递归函数,而不是数据类型。试试看
calcPolynom _ (Polynom []) = 0.0
calcPolynom n (Polynom (h:ts)) = h + n * calcPolynom n (Polynom ts)
当您尝试模式匹配构造函数时,必须将其括在括号中。这不仅适用于多项式数据类型,还适用于列表<代码>[h:ts]与您期望的没有什么不同,它只与一个元素(即列表)的列表([[?]]
)匹配。最后,必须递归函数,而不是数据类型。试试看
calcPolynom _ (Polynom []) = 0.0
calcPolynom n (Polynom (h:ts)) = h + n * calcPolynom n (Polynom ts)
当您尝试模式匹配构造函数时,必须将其括在括号中。这不仅适用于多项式数据类型,还适用于列表<代码>[h:ts]与您期望的没有什么不同,它只与一个元素(即列表)的列表([[?]]
)匹配。最后,必须递归函数,而不是数据类型。试试看
calcPolynom _ (Polynom []) = 0.0
calcPolynom n (Polynom (h:ts)) = h + n * calcPolynom n (Polynom ts)
当您尝试模式匹配构造函数时,必须将其括在括号中。这不仅适用于多项式数据类型,还适用于列表<代码>[h:ts]与您期望的没有什么不同,它只与一个元素(即列表)的列表(
[[?]]
)匹配。最后,您必须递归函数,而不是数据类型。您只需要一些括号并修复模式匹配:
calcPolynom _ (Polynom []) = 0.0
calcPolynom n (Polynom (h:ts)) = h + n * ???
我在?
中留了一个空白供您填写,您必须找出应该去那里的内容,而不是您现在拥有的内容。原因是不能将Double
类型的值与Polynom
类型的值相乘,但可以递归编写(我假设这是您的初衷)
当你有这样的代码时
calcPolynom n Polynom [h:ts] = ...
编译器看到
calcPolynom
有3个参数,Polynom
没有参数,您可以使用括号进行分组。您只需要一些括号并修复模式匹配:
calcPolynom _ (Polynom []) = 0.0
calcPolynom n (Polynom (h:ts)) = h + n * ???
我在?
中留了一个空白供您填写,您必须找出应该去那里的内容,而不是您现在拥有的内容。原因是不能将Double
类型的值与Polynom
类型的值相乘,但可以递归编写(我假设这是您的初衷)
当你有这样的代码时
calcPolynom n Polynom [h:ts] = ...
编译器看到
calcPolynom
有3个参数,Polynom
没有参数,您可以使用括号进行分组。您只需要一些括号并修复模式匹配:
calcPolynom _ (Polynom []) = 0.0
calcPolynom n (Polynom (h:ts)) = h + n * ???
我在?
中留了一个空白供您填写,您必须找出应该去那里的内容,而不是您现在拥有的内容。原因是不能将Double
类型的值与Polynom
类型的值相乘,但可以递归编写(我假设这是您的初衷)
当你有这样的代码时
calcPolynom n Polynom [h:ts] = ...
编译器看到
calcPolynom
有3个参数,Polynom
没有参数,您可以使用括号进行分组。您只需要一些括号并修复模式匹配:
calcPolynom _ (Polynom []) = 0.0
calcPolynom n (Polynom (h:ts)) = h + n * ???
我在?
中留了一个空白供您填写,您必须找出应该去那里的内容,而不是您现在拥有的内容。原因是不能将Double
类型的值与Polynom
类型的值相乘,但可以递归编写(我假设这是您的初衷)
当你有这样的代码时
calcPolynom n Polynom [h:ts] = ...
编译器看到
calcPolynom
有3个参数,Polynom
没有参数,您可以使用括号进行分组。非常感谢!!当然,我想写递归,很快就明白了。非常感谢!!当然,我想写递归,很快就明白了。非常感谢!!当然,我想写递归,很快就明白了。非常感谢!!当然我想写递归,很快就明白了谢谢!帮了很多忙!非常感谢。帮了很多忙!非常感谢。帮了很多忙!非常感谢。帮了很多忙!