我有一个问题: 如何重写 String 或 Char 的 show 方法? 谢谢。
最佳答案
由于人们似乎喜欢我的评论,因此将其作为答案:
如果您想在现有类型上重新实现类型类,可以将它们包装在 newtype
中。 -声明类型。这允许您定义自己的实现,而无需在运行时产生任何实际开销(因为 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"]
关于string - 重写 Haskell 中 String/Char 的 show 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8192118/