Я начинаю изучать Haskell, и мне нужно создать очень простую функцию, которая принимает два списка и объединяет их.
app :: [a] -> [a] -> [a]
app xs ys = xs ++ ys
Это часть задачи, в рамках которой мы должны протестировать более мелкие функции, подобные этим.
Я делаю это с помощью Criterion. Полный код выглядит следующим образом:
import Criterion.Main
main = defaultMain [
bgroup "normal 100" [ bench "app" $ whnf app $ [0..49] [50..100]
]
]
app :: [a] -> [a] -> [a]
app xs ys = xs ++ ys
Компиляция терпит неудачу и оставляет меня с этим:
Couldn't match expected type `[Integer] -> [a0]'
with actual type `[Integer]'
The function `[0 .. 49]' is applied to one argument,
but its type `[Integer]' has none
In the second argument of `($)', namely `[0 .. 49] [50 .. 100]'
In the second argument of `($)', namely
`whnf app $ [0 .. 49] [50 .. 100]'
У меня реальная проблема с расшифровкой сообщений об ошибках ghc, и я в основном застрял здесь.
Я знаю, что здесь много вопросов о несоответствии типов, но я не смог найти решение.
Заранее спасибо!