我有一个问题: 如何覆盖字符串或字符的显示方法? 谢谢。替换Haskell中的字符串/字符的显示方法
5
A
回答
2
如果你想要这样做,那么你做错了。
有关更多技术原因,请参阅上一个问题的my answer。
你真的应该使用无论是你自己a -> String
功能(可能通过自己的类型类),或者使用更详细的输出漂亮印刷库(其中一些已经有一个内置的Pretty
类)。
8
由于人们似乎喜欢我的意见,这是作为一个答案:
如果你想在现有的类型重新实现类型类,你可以在一个newtype
-declared型包装他们。这允许您定义自己的实现,而不会在运行时产生任何实际开销(因为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"]
+0
你也可以定义showList,然后MyChar的列表也会自定义格式。实际上,这就是显示字符列表([Char])的行为与显示其他列表([a])不同的原因。 – sdcvvc
相关问题
- 1. 替换方法不是替换字符串中的字符
- 2. 替换Haskell中的字符串
- 3. 字符串中的字符串替换
- 4. 用Haskell中的数字替换字符
- 5. 有效的方法来替换字符串中的字符(Java)?
- 6. 从Hashtable中替换字符串中字符的最佳方法?
- 7. 在VBA中替换字符串中字符的最快方法
- 8. 用Python替换大字符串中字符的最佳方法?
- 9. 字符串替换更好的方法
- 10. 字符串替换方法的优化
- 11. 替换字符串中的字符
- 12. 替换字符串中的字符
- 13. 替换字符串中的字符
- 14. 替换字符串中的字符
- 15. 替换字符串中的字符
- 16. VBA - 替换字符串中的字符
- 17. 替换字符串中的字符
- 18. Postgres替换字符串中的字符
- 19. 替换字符串中的字符Java
- 20. 字符替换字符串中的
- 21. 字符串中的替换字符
- 22. 替换字符串中的字符,Java
- 23. 替换字符串中的SOH字符
- 24. Java - 替换字符串中的字符
- 25. 替换Java字符串中的'\'字符
- 26. 字符串中的字符替换
- 27. Java - 替换字符串中的字符
- 28. 替换字符串中的字符?
- 29. 替换字符串内的字符串
- 30. 用特殊字符替换字符串中的字符串
是不是有一个原因,你不想只定义一些其他函数类型的字符 - >字符串或字符串 - >字符串?你为什么要重写'show'? – hammar
我想你必须把它包装在一个[新类型](http://www.haskell.org/haskellwiki/Newtype)中并为该类型定义Show。 –