【问题标题】:Haskell: Does ghci show "Chunk .. Empty"?Haskell:ghci 是否显示“Chunk .. Empty”?
【发布时间】:2013-06-25 19:26:52
【问题描述】:

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 的值的打印方式?

【问题讨论】:

  • 你的版本是什么?我的 7.4.2 就像 LYAH 所说的那样工作。
  • 我的也是 7.4.2。我正在使用 Windows。有关系吗?
  • 哈,我也是,所以可能没有。

标签: haskell bytestring


【解决方案1】:

看起来 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

添加:Here是相关补丁

【讨论】:

    【解决方案2】:

    BL.ByteString simple 的旧版本在其 data 声明中具有 deriving Show。这会产生如 LYAH 中所示的 GHCi 输出,并确保输出是有效的 Haskell 代码。漂亮的纯字符串"can" 并不是该字节串的有效Haskell 表示——也就是说,不是有效的Haskell 98 表示。但是,在使用字节串的模块中使用{-# LANGUAGE OverloadedStrings #-} 是很常见的,这使其有效。这可能是现在(因为0.10)这个更易读的手册实例的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多