haskell - Haskell 中的内部数据结构(文本)

标签 haskell bytestring

因此,我正在使用 aeson 将一些 JSON 解析为自定义数据类型,但我似乎无法理解为什么 Haskell 需要在库中具有某些类型的两种表示形式。就我而言,这都与文本有关。

例如:

Couldn't match expected type `Data.ByteString.Internal.ByteString'
with actual type `B.ByteString'.

嗯,什么?这两个怎么不一样?为什么会有Data.ByteString.ByteStringData.ByteString.Internal.ByteString?我不明白为什么这两者是两种不同的类型以及为什么我需要在它们之间进行转换。

是否有介绍 ByteString 用法的指南?我知道如果您只处理 ASCII,它们比 String 更有效。

最佳答案

Data.ByteString.ByteString 只是 Data.ByteString.Internal.ByteString 的再导出,所以类型是相同的。然而,严格字节串和惰性字节串是不同的类型,因此我怀疑您遇到的问题是由 B.ByteString 实际上是 Data.ByteString.Lazy.ByteString 引起的。

如果这没有帮助,请提供更多上下文。

Bytestring确实是存储ASCII最高效的类型。这是 a tutorial on bytestring . String 对于大多数用例来说效率很低,Text是 unicode 的首选替代方案。

关于haskell - Haskell 中的内部数据结构(文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24223326/

相关文章:

haskell - 如何从 ByteString 转换为正整数

haskell - 使用(伪)可变映射调用函数(并更改映射)

haskell - Haskell 中的句柄更安全?

haskell - 第二个最近的列表项 Haskell

haskell - 无法将预期类型 `Data.ByteString.Internal.ByteString' 与实际类型 `ByteString' 匹配

Haskell 字节串 : How to pattern match?

haskell - 安全复制从字符串迁移到字节串

Haskell:ghci 是否显示 "Chunk .. Empty"?

haskell - 模板-haskell中的单双引号/撇号有什么区别?

haskell - 卡在 Haskell Wiki 中的 State Monad 示例中