首页 文章

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

提问于
浏览
0

我目前正在调查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 回答

  • 2

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

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

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

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

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

相关问题