Haskell - 使用'=='时没有(Eq(Int - > Int))的实例

时间:2018-04-08 11:37:11

标签: haskell instance equals comparable

我目前正在调查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:)

1 个答案:

答案 0 :(得分:2)

你只给了mod一个参数,在这一行:

        | mod x == 0 = x : myFilterList xs
--        ^^^^^ HERE

所以看起来你正在尝试比较功能。您可能会注意到GHC在错误中告诉您:

  

使用'=='时没有(Eq(Int - > Int))的实例(也许你还没有将函数应用到足够的参数?)

我应该是mod x y,其中y是模数('divider')。我不知道你想要什么y,所以我无法纠正你的代码。