You treat it xslike a list, but (x1:xs:x2:[])it assumes that it is an element of your input list.
Note that it (x1:xs:x2:[])will only correspond to lists with 3 elements, and x1, xsand x2will be type elements a.
So, it xshas a type a, but as you pass it in isPalindrome, we can only assume that it should be a list of something, so the type system calls the type [a1].
The easiest way to encode:
isPalindrome::(Eq a) => [a] -> Bool
isPalindrome l = l == (reverse l)