Take the following definitions:
p = "abc"
q = ['a', 'b', 'c']
Because strings are lists of characters, the expression p == q will evaluate to True. That's just fine.
When I let GHCi evaluate expression p, it shows value "abc". That is expected, since p is of type String. (In GHCi, the command :type p shows p :: String.) But when I let GHCi evaluate expression q, it also shows value "abc". That is actually unexpected, since q is of type [Char], not String. (In GHCi, the command :type q shows q :: [Char], not q :: String.) So despite the type equality of String and [Char], I would expect q to be shown as a list of characters, not as a string of characters.
As I see it, the expression ['a', 'b', 'c'] :: String should produce the string value "abc", while the expression "abc" :: [Char] should produce the list value ['a', 'b', 'c']. But it doesn't seem to work that way. I consider that to be strange. So how can I actually show both p and q as a list of characters (['a', 'b', 'c']) instead of as a string of characters ("abc")? And if that is not possible, why is that not possible? (If a string is a list of characters, shouldn't I be able to show it as a list of characters as well?)