[英]Override show method for String/Char in Haskell
我有一个问题:如何覆盖String或Char的show方法? 谢谢。
由于人们似乎喜欢我的评论,这里作为答案:
如果你想在现有的类型重新实现类型类,你可以在一个包裹他们newtype
-declared类型。 这允许您定义自己的实现,在运行时没有任何实际开销(因为newtype
与原始类型同构,在运行时没有实际装箱)。
这可能看起来像这样:
newtype MyChar = MyChar Char
instance Show MyChar where
show (MyChar c) = "head \"" ++ c : "\""
您可以通过使用MyChar
包装Char
来使用它,如下所示:
print $ fmap MyChar "test"
这将打印出来
[head "t",head "e",head "s",head "t"]
如果你想这样做,那么你做错了。
有关更多技术原因,请参阅我对上一个问题的回答。
你真的应该使用自己的a -> String
函数(可能通过你自己的类型类)或使用漂亮的打印库来获得更详细的输出(其中一些已经内置了Pretty
类)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.