[英]Haskell - No instance for (Eq (Int -> Int)) arising from a use of ‘==’
我目前正在研究haskell。 我知道我必須將數據類型作為Eq的一個實例才能進行比較。 但是Int應該已經可以比較了吧? 所以我不知道如何處理以下錯誤:
•沒有因使用'=='而引起的(Eq(Int-> Int))實例(也許您尚未將函數應用於足夠的參數?)
我的代碼如下:
myRandomList = [1,2,3,4,5,6,7,8,9,10]
myFilterList :: [Int] -> [Int]
myFilterList [] = []
myFilterList (x:xs)
| mod x == 0 = x : myFilterList xs
| otherwise = myFilterList xs
myDotFunc = map (+ 1) . myFilterList . myRandomList
附:我什至不確定,如果我的代碼能正常工作而不會出現此錯誤,請記住我剛剛開始haskell :)
在這一行中,您只給了mod
一個參數:
| mod x == 0 = x : myFilterList xs
-- ^^^^^ HERE
因此,看起來您正在嘗試比較功能。 您可能會注意到,GHC在錯誤中告訴您這一點:
沒有因使用'=='而引起的(Eq(Int-> Int))實例(也許您尚未將函數應用於足夠的參數?)
我應該是mod xy
,其中y
是模(“除法器”)。 我不知道你想要什么y
是,雖然如此,我不能糾正你的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.