Haskell:如何添加补丁?

时间:2014-10-14 21:22:29

标签: haskell ghci

我在“了解你是一个Haskell”的IO章节中,注意到Bytestrings的显示方式与书中的屏幕截图之间存在差异(参见下面的示例)。除非人们有其他建议,否则解决方案(至少根据this post)似乎是安装this patch

这可能是一个非常基本的问题但是...我该如何安装这种类型的补丁呢?

当然可以接受其他建议:如何让ghci显示正确的ByteString格式。


我的设置/系统:

  • ghci 7.6.3(通过Haskell平台安装)
  • Xubuntu 14(VirtualBox)

如何在书中显示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"

1 个答案:

答案 0 :(得分:4)

您引用的补丁显示了较新版本的bytestring与较新版本之间的差异,其中较新版本使用手写的Show实例。你不应该安装它,只是LYAH需要在这里和那里进行一些更新(Haskell开发在过去几年中发展得非常快)。

ByteString构造函数实际上是私有的,您无法直接使用它们。因此,Show实例应输出可以转回String的{​​{1}},最简单的方法是使用ByteStringpack } extension。

OverloadedStrings中有toChunks个功能,但我不确定它是否符合您的要求。基本上,您应该将Data.ByteString.Lazy实现视为私有,并且仅使用导出的库函数来确保您不会破坏任何内容。这相当于希望看到ByteString的内部结构,它只是不适合使用。