tcfail198.hs:6:36: error: Couldn't match expected type ‘a2’ with actual type ‘a1’ because type variable ‘a2’ would escape its scope This (rigid, skolem) type variable is bound by an expression type signature: a2 at tcfail198.hs:6:36-41 In the expression: x :: a In the second argument of ‘(++)’, namely ‘[x :: a]’ Relevant bindings include xs :: [a1] (bound at tcfail198.hs:6:21) x :: a1 (bound at tcfail198.hs:6:19) f3 :: [a1] -> [a1] (bound at tcfail198.hs:6:6)