我有一個問題: 如何覆蓋字符串或字符的顯示方法? 謝謝。替換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。 –