2016-11-23 60 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如果我的懷疑是正確的,那麼您可能還想考慮不要爲每個問題創建一個新用戶......您可以使用相同的帳戶發佈新問題。 –

相關問題