Не удалось сопоставить ожидаемый тип `a 'с фактическим типом` [a]'

Я смог выполнить следующий код без нареканий

myLast :: [a] -> a
myLast [] = error "Can't call myLast on an empty list!"
myLast (x:_) = x

но я получаю эту ошибкуCouldn't match expected type `a' with actual type `[a]'. `a' is a rigid type variable bound by the type signature for myLast :: [a] -> a для следующего кода:

myLast :: [a] -> a
myLast [] = error "Can't call myLast on an empty list!"
myLast (_:x) = x

Я новичок в Хаскеле, и сообщение об ошибке слишком греческое и латинское для меня. Из того, что я могу понять, компилятор не может определить тип во втором случае. Может кто-нибудь указать мне на то, что на самом деле здесь происходит?

Ответы на вопрос(3)

Ваш ответ на вопрос