в настоящее время я изучаю 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 :)
Итак,
mod x
— это не число, вам нужно указать дополнительный аргумент.Разве это не говорит больше о местоположении?
Более того,
myRandomList
не является функцией, вместо этогоmyDotFunc
должно бытьmyDotFunc = map (+1) . myFilterList
.Почему за это голосуют? Это не плохой вопрос.