2016-11-23 103 views
0

这是我的程序的代码:哈斯克尔无法匹配预期的类型“双”与实际类型“诠释”

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

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

和错误,这我越来越:

Couldn “T匹配预期类型‘双’与实际类型‘INT’

在的第一个参数‘本功能’,即‘n’个

在第二申辩'(*)',即'功能n'

我真的是新手哈斯克尔,所以试图解决这个错误是不成功的。函数返回Double,所以我不明白为什么错误说它的实际类型是Int。请帮忙!

+0

为什么这个标记为 “多线程”?这个问题与多线程无关。 –

+0

等一下。你是不是问过关于Haskell和并发的两个问题的用户?你的用户名是[eerily familiar](https://stackoverflow.com/questions/40726052/how-to-create-threads-in-haskell)... – Zeta

+0

它在'funct'的第一个参数**中说**。不在返回类型! – immibis

回答

3

你需要转换的IntnDouble

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

谢谢,它的工作原理!但是稍微改变这个函数之后,会出现另一个错误。请参阅更新 – i1892700

+6

@ i1892700请在原始问题解决后不要编辑您的问题。如果遇到新的问题,你可能会(在你尝试并且未能自己解决它们之后!)询问关于它们的新问题。 – leftaroundabout

+1

@ i1892700如果我的怀疑是正确的,那么您可能还想考虑不要为每个问题创建一个新用户......您可以使用相同的帐户发布新问题。 –

相关问题