Hm, I thought it is a pattern match with constant, as in f ('a':xs) ==The problem here isn't quite what you think it is; (==) is not a constructor, therefore it is a *variable*. It's exactly the same problem as
a = 5-- ...foo a = 3 -- this does NOT compare with the previous value of "a"; it's identical to the next line!foo x = x