Conversation

No, in Haskell strings are represented as lists of characters. This was cute at the time it was designed, but horrible in the current world of Unicode. Also terrible for performance. Thankfully you can now use a better representation via the Text package.
5
36
Oh.... hmmm. Would be a pretty funny definition of coerce. It's probably better to think of it as "the compiler deduces `[] :: List Char` based on how it is used in conjunction with `("" ==)`". Thought the original post was amusing despite that though!
1
10
In Haskell String _is_ a list of chars, there is nothing to coerce, it is the same thing. Therefore both "" == "" and [] == [] are true, and "" == [1,2,3] isn't even a thing. And this is how it is consistent: you can only compare the same things, and it always works :)
1