我在“了解你是一个Haskell”的IO章节中,注意到Bytestrings的显示方式与书中的屏幕截图之间存在差异(参见下面的示例)。除非人们有其他建议,否则解决方案(至少根据this post)似乎是安装this patch。
这可能是一个非常基本的问题但是...我该如何安装这种类型的补丁呢?
当然可以接受其他建议:如何让ghci显示正确的ByteString格式。
我的设置/系统:
如何在书中显示ByteStrings。 (注意:我们可以假设作者加载了包含以下import qualified Data.ByteString.Lazy as B
的脚本。)
ghci> B.cons 85 $ B.pack [80,81,82,84]
Chunk "U" (Chunk "PQRT" Empty)
ByteStrings如何显示在我的电脑上:
Prelude> import qualified Data.ByteString.Lazy as B
Prelude B> B.cons 85 $ B.pack [80,81,82,84]
"UPQRT"
答案 0 :(得分:4)
您引用的补丁显示了较新版本的bytestring与较新版本之间的差异,其中较新版本使用手写的Show
实例。你不应该安装它,只是LYAH需要在这里和那里进行一些更新(Haskell开发在过去几年中发展得非常快)。
ByteString
构造函数实际上是私有的,您无法直接使用它们。因此,Show
实例应输出可以转回String
的{{1}},最简单的方法是使用ByteString
或pack
} extension。
OverloadedStrings
中有toChunks
个功能,但我不确定它是否符合您的要求。基本上,您应该将Data.ByteString.Lazy
实现视为私有,并且仅使用导出的库函数来确保您不会破坏任何内容。这相当于希望看到ByteString
的内部结构,它只是不适合使用。