@polecat Элементарно. Во времена Haskell98 не было OverlappingInstances. Чтобы иметь разный show для [Char] и любого другого списка, Show таскает за собой функцию showList и именно она перегружена у Char'а. Лях же воспользовался нестандартным расширением, написал инстанс для более узкого типа и живёт долго и счастливо. Вернее сказать будет жить, когда напишет специальный Read [Char].