У меня вопрос: как переопределить метод show для String или Char? Спасибо.
Переопределить метод show для String/Char в Haskell
Ответы (2)
Если вы хотите сделать это, то вы делаете это неправильно.
По техническим причинам см. мой ответ на предыдущий вопрос.
Вам на самом деле следует использовать либо свои собственные функции a -> String
(возможно, через собственный класс типов), либо использовать библиотеку для более подробного вывода (некоторые из них уже имеют встроенный класс Pretty
).
Поскольку людям нравится мой комментарий, вот он как ответ:
Если вы хотите повторно реализовать классы типов для существующих типов, вы можете обернуть их в объявленный newtype
тип. Это позволяет вам определять свои собственные реализации без каких-либо фактических накладных расходов во время выполнения (поскольку newtype
изоморфен исходному типу, фактическая упаковка во время выполнения не выполняется).
Это может выглядеть примерно так:
newtype MyChar = MyChar Char
instance Show MyChar where
show (MyChar c) = "head \"" ++ c : "\""
Вы можете использовать это, обернув Char
s с MyChar
, например:
print $ fmap MyChar "test"
Это распечатает
[head "t",head "e",head "s",head "t"]
Char -> String
илиString -> String
? Почему вы хотите переопределитьshow
? - person hammar   schedule 19.11.2011