Learn You a Haskell有一个类似的代码示例:
ghci> B.pack [99,97,110]
Chunk "can" Empty
(B
代表Data.ByteString.Lazy
)
但是我的ghci
没有显示Chunk
和Empty
数据构造函数。
> B.pack [99,97,110]
"can"
Haskell开发人员是否更改了ByteString
值的打印方式?
看起来Duncan在0.9.2.1
和0.10.0.1
之间的某个位置为懒惰的ByteString
添加了手写的Show
实例。看见http://hackage.haskell.org/packages/archive/bytestring/0.10.2.0/doc/html/src/Data-ByteString-Lazy-Internal.html#ByteString
添加:这是相关的补丁
旧版本的BL.ByteString
simple在其data
声明中有一个deriving Show
。这将产生如LYAH所示的GHCi输出,并确保输出是有效的Haskell代码。漂亮的纯字符串"can"
实际上不是该字节串的有效Haskell表示——也就是说,不是有效的Haskell98表示。然而,在使用字节串的模块中使用{-# LANGUAGE OverloadedStrings #-}
是很常见的,这使得它有效。这可能是现在(自0.10
以来)有这个更好阅读的手动实例的原因。