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
打印值的方式?
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 在和之间添加了懒惰的手写Show
实例。见http://hackage.haskell.org/packages/archive/bytestring/0.10.2.0/doc/html/src/Data-ByteString-Lazy-Internal.html#ByteStringByteString
0.9.2.1
0.10.0.1
添加:这里是相关补丁
旧版本的BL.ByteString
simplederiving Show
在他们的data
声明中有一个。这会产生如 LYAH 中所示的 GHCi 输出,并确保输出是有效的 Haskell 代码。漂亮的纯字符串"can"
实际上并不是该字节串的有效 Haskell 表示——也就是说,不是有效的Haskell 98表示。但是,通常{-# LANGUAGE OverloadedStrings #-}
在使用字节串的模块中使用,这使其有效。这可能是现在(因为0.10
)有这个更易读的手动实例的原因。