繁体   English   中英

在Haskell中覆盖String / Char的show方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM