我目前正在调查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
Ps:我甚至不确定,如果我的代码没有出现此错误,请记住我刚开始使用haskell:)
答案 0 :(得分:2)
你只给了mod
一个参数,在这一行:
| mod x == 0 = x : myFilterList xs
-- ^^^^^ HERE
所以看起来你正在尝试比较功能。您可能会注意到GHC在错误中告诉您:
使用'=='时没有(Eq(Int - > Int))的实例(也许你还没有将函数应用到足够的参数?)
我应该是mod x y
,其中y
是模数('divider')。我不知道你想要什么y
,所以我无法纠正你的代码。