我正在閱讀Real World Haskell第5章(編寫JSON渲染器)。Doc數據值構造函數Char和Text之間的區別
data JValue = JString String
| JNumber Double
| JBool Bool
| JNull
...
data Doc = Empty
| Char Char
| Text String
| Concat Doc Doc
....
我無法理解的字符和文本文件(文件值構造)之間的差值 。
renderJValue :: JValue -> Doc
renderJValue (JNumber n) = Text $ show n
renderJValue (JBool b) = Text $ show b
renderJValue JNull = Text "null"
renderJValue (JString (a:b:[])) = render a `Concat` render b
where render c = if isEscapeChar(c)
then Text (c : [])
else Char c
renderJValue $ JNumber 3
= Text "3"
renderJValue $ JNull
= Text "null"
renderJValue $ JString ("null")
= Char 'n' `Concat` Char 'u' `Concat` Char 'l' `Concat` Char 'l'
renderJValue $ JString ('a' : '\n' : [])
= Char 'a' `Concat` Text "\n"
區分字符和文本有什麼好處?
我懷疑你錯過了一些上下文。 – dfeuer