Я начинаю изучать Haskell и должен создать действительно простую функцию, которая принимает два списка и объединяет их.Ошибка совпадения типа Haskell при передаче двух списков
app :: [a] -> [a] -> [a]
app xs ys = xs ++ ys
Это часть задачи, в которой мы должны сравнивать меньшие функции, подобные этим.
Я делаю это с Критерием. Полный код выглядит следующим образом:
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, и я в основном застрял здесь.
Я знаю, что здесь есть много вопросов о несоответствиях типов, но я не мог найти решение.
Заранее благодарим!
Я бы порекомендовал переписать это без использования '$' в любом месте, только используя скобки, а затем добавив '$' обратно после того, как вы заработаете, если захотите. –
@AlexisKing Да, я пробовал это уже, но у меня такая же ошибка, поэтому я их оставил. – DShade