Не удалось сопоставить ожидаемый тип `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
Я новичок в Хаскеле, и сообщение об ошибке слишком греческое и латинское для меня. Из того, что я могу понять, компилятор не может определить тип во втором случае. Может кто-нибудь указать мне на то, что на самом деле здесь происходит?