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