【问题标题】:Haskell Couldn't match expected type ‘Double’ with actual type ‘Int’Haskell 无法将预期类型“Double”与实际类型“Int”匹配
【发布时间】:2017-04-07 06:47:50
【问题描述】:

这是我的程序的代码:

funct :: Double -> Double
funct x = 3/(x^2+1)

zetaRange :: (Int, Int) -> [Double]
zetaRange (x,y) = [ 0.01 * funct n | n <- [x..y] ]

和我得到的错误:

无法将预期类型“Double”与实际类型“Int”匹配

在‘funct’的第一个参数中,即‘n’

在‘(*)’的第二个参数中,即‘funct n’

我真的是 haskell 的新手,所以尝试修复这个错误没有成功。 funct 正在返回 Double,所以我不明白为什么错误说它的实际类型是 Int。请帮忙!

【问题讨论】:

  • 为什么用“多线程”标记?这个问题与多线程无关。
  • 等等。你不是问两个关于 Haskell 和并发的问题的用户吗?你的用户名是eerily familiar...
  • 它说在'funct'的第一个参数中。不在返回类型中!

标签: haskell


【解决方案1】:

您需要将Int n 转换为Double

zetaRange (x,y) = [ 0.01 * funct (fromIntegral n) | n <- [x..y] ]

【讨论】:

  • 谢谢,它有效!但是在我稍微更改此功能后,它会给出另一个错误。请看更新
  • @i1892700 一旦原始问题得到解决,请不要编辑您的问题。如果您遇到新问题,您可以(在您自己尝试并未能解决之后!)就这些问题提出一个新问题
  • @i1892700 如果我的怀疑是正确的,您可能还想考虑不要为每个问题都创建一个新用户...您可以使用同一个帐户发布新问题。
猜你喜欢
  • 1970-01-01
  • 2012-09-14
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多