string - 重写 Haskell 中 String/Char 的 show 方法

标签 string haskell char overriding show

我有一个问题: 如何重写 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/

相关文章:

python - 如何在 Python 中获取字符串的前 2 个字母?

java - 字符数组大小? Stringbuffer 将 HTMl 文件保存在字符串中

c - 如何在 C 中读取文件,将二进制缓冲区转换为二进制字符串,然后再次将二进制字符串转换为二进制缓冲区?

haskell - 顶级 OverloadedLists 字面量

haskell - haskell 中的 "Open Data Types and Open Functions"

C:从模式匹配中提取字符串和字符串终止的替代方法?

haskell - 如何在 nomachine 远程桌面上运行 xmonad?

c++ - 使用 C++ 样式转换将 int 转换为 char

c - 将 32 位 int 存储到 char 缓冲区

c - 编辑 char* 数组