问题标签 [bytestring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 神秘词(“LPS”)出现在 Haskell 输出列表中
我是 Haskell 的新手,并试图摆弄一些我在现实世界中经常遇到的测试用例。假设我有包含以下内容的文本文件“foo.txt”:
我正在尝试产生输出
我的代码在下面,但我在输出中得到了一些虚假的“LPS”......不确定它代表什么。
当用testFunc "foo.txt"调用时,输出是
任何帮助表示赞赏!谢谢。PS:使用 ByteString,因为这将在未来用于大量文件。
编辑:
我也很困惑为什么输出列表按上面的方式分组(每个数字都绑定在 [] 中),而在 ghci 中,下面的行给出了不同的排列。
string - 在 ByteString 上拆分 ByteString(而不是 Word8 或 Char)
我知道我已经有 Haskell Data.ByteString.Lazy 函数将 CSV 拆分为单个字符,例如:
但我想拆分一个多字符的 ByteString(比如拆分一个字符串而不是一个字符):
我在需要解析的类似 csv 的文本文件中有多个字符分隔符,并且各个字符本身出现在某些字段中,因此仅选择一个分隔符并丢弃其他分隔符会污染数据导入。
我对如何做到这一点有一些想法,但它们似乎有点老套(例如,取三个 Word8,测试它们是否是分隔符组合,如果是,则开始一个新字段,进一步递归),我想我会无论如何都要重新发明一个轮子。有没有办法在不从头开始重建功能的情况下做到这一点?
haskell - 多种类型的字符串(ByteString)
我希望压缩我的应用程序的网络流量。
根据(最新?)“Haskell 流行度排名”,zlib似乎是一个非常流行的解决方案。zlib的接口使用ByteString
s:
我正在使用常规String
s,它们也是 、 和 使用的read
数据show
类型Network.Socket
:
所以要压缩我的字符串,我需要一些方法来将 a 转换String
为 a ByteString
,反之亦然。在hoogle的帮助下,我发现:
尝试使用它:
失败,因为 (?) 有不同类型的ByteString
?
所以基本上:
- 有几种类型
ByteString
?有哪些类型,为什么? String
将s转换为 s 的“方法”是ByteString
什么?
顺便说一句,我发现它确实适用于Data.ByteString.Lazy.Char8
's ByteString
,但我仍然很感兴趣。
haskell - 将映射的 ByteString 转换为其他类型?
我意识到这可能是一个相当异端的问题,但我想知道我是否可以通过 System.IO.Posix.MMap 将数据文件cast
映射到某个其他类型的严格数组中?例如。如果我知道该文件包含双精度,我能否以某种方式将这些映射数据放入一个 UArr Double 中,以便我可以对其进行 sumU 等操作,并让虚拟内存系统为我处理 IO?这基本上就是我在 C++ 代码中处理多 GB 数据集的方式。其他更惯用的方法也可以做到这一点,谢谢!
我还可以对数据进行多核处理的方式的最高附加分 :-) 并不是说我要求高或任何东西。
haskell - 使用 Haskell 的 Parsec 解析 ByteString
我已经设法使用 Parsec 来解析字符串,但无法对 ByteString 做同样的事情。
如何在不手动将它们转换为字符串的情况下使 Parsec 与 ByteStrings 一起使用?
我觉得这并不难实现。我错了吗?(我是 Haskell 的新手。^^)
谢谢!
haskell - 如何在 Haskell 中将 Integer 转换为 ByteString
我们想以特定的二进制格式序列化数据。我们Data.ByteString
在内部使用 s。
所以,问题是:如何将我们使用的不同数据类型转换为ByteString
. 因为String
我们没有问题,我们可以使用encodeLazyByteString UTF8 "string"
. 但我们也想将Integer
s 转换为ByteString
s(大端)。
有谁知道如何做到这一点和/或有任何使用 Haskell 和二进制格式的好技巧?
谢谢!
haskell - Haskell ByteString / Data.Binary.Get 问题
尝试使用 Data.Binary.Get 和 ByteString 却不明白发生了什么。我的代码如下:
对于返回元组的第三项,即有效负载,我收到以下错误:
有人请向我解释 Data.Binary.Get 和 ByteStrings 之间的交互以及我如何做我想做的事情。谢谢。
performance - 寻找字节串终止符的函数的 Haskell 优化
一些代码的分析表明,大约 65% 的时间我都在下面的代码中。
它所做的是使用 Data.Binary.Get monad 遍历一个字节串来寻找终止符。如果检测到 0xff,则检查下一个字节是否为 0x00。如果是,它会丢弃 0x00 并继续。如果它不是 0x00,那么它会丢弃两个字节,并将生成的字节列表转换为字节串并返回。
有什么明显的优化方法吗?我看不到它。
haskell - 在 Haskell 中,在 Lazy ByteString 上调用 length 会强制整个字符串进入内存吗?
我正在使用惰性字节串读取一个大数据流,并且想知道在解析它时是否至少还有 X 个字节可用。也就是说,我想知道字节串是否至少有 X 个字节长。
调用length
它会导致整个流被加载,从而破坏使用惰性字节串的目的吗?
如果是,那么后续将是:如何在不加载整个流的情况下判断它是否至少有 X 个字节?
编辑:最初我在阅读文件的情况下询问,但了解有更好的方法来确定文件大小。但是,我需要的最终解决方案不应依赖于惰性字节串源。