Haskell:ghci 显示"Chunk .. Empty"吗?



Learn You a Haskell有一个类似的代码示例:

ghci> B.pack [99,97,110]  
Chunk "can" Empty  

B代表Data.ByteString.Lazy

但是我的ghci没有显示ChunkEmpty数据构造函数。

> B.pack [99,97,110]  
"can"

Haskell开发人员是否更改了ByteString值的打印方式?

看起来Duncan在0.9.2.10.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.ByteStringsimple在其data声明中有一个deriving Show。这将产生如LYAH所示的GHCi输出,并确保输出是有效的Haskell代码。漂亮的纯字符串"can"实际上不是该字节串的有效Haskell表示——也就是说,不是有效的Haskell98表示。然而,在使用字节串的模块中使用{-# LANGUAGE OverloadedStrings #-}是很常见的,这使得它有效。这可能是现在(自0.10以来)有这个更好阅读的手动实例的原因。

最新更新