问题标签 [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.

0 投票
2 回答
260 浏览

string - Network.Socket.ByteString.Lazy 的 sendTo 在哪里?

两者Network.Socket.ByteString都有Network.Socket.ByteString.Lazy一个send功能。

Network.Socket.ByteStringsendTo功能,但Network.Socket.ByteString.Lazy没有。

如何将Network.Socket.ByteString's sendTo 与 Lazy.ByteString Network.Socket.ByteString.Lazy'send函数一起使用。(即我如何告诉它将数据包发送到哪里。)

任何人都可以推荐一个关于 Haskell 字符串 BytesStrings 的好教程。Lazy.ByteStrings 等,因为我发现它们非常令人困惑(来自 Java/Python 背景)。

0 投票
1 回答
979 浏览

haskell - 是否可以在 Haskell 的 HXT 上使用 Text 或 ByteString?

我认为 Haskell 中的 XML/HTML 处理库 HXT 具有非常灵活和强大的方法,可以通过 Arrows 遍历和操作 DOM 树。 http://adit.io/posts/2012-04-14-working_with_HTML_in_haskell.html

然而,HXT 似乎只有 DOM 节点内容的字符串表示。 http://hackage.haskell.org/packages/archive/hxt/9.1.6/doc/html/Text-XML-HXT-DOM-TypeDefs.html#t:XNode

是否可以将 ByteString 或 Text 用于 HXT?Text 是首选,因为我将 HXT 与 Yesod 一起使用,它似乎主要使用 Text。

0 投票
1 回答
159 浏览

haskell - 懒惰的 ByteString 奇怪的行为或错误?

当我在 GHCI 中测试我的函数 intervalFinder 时,它似乎正在工作,但是当我尝试编译它时,我没有输出:

该函数适用于输入:

并运行主要:

在 results.txt 中打印:

但如果我运行 ghc test3.hs,输出文件为 0kb(显然其中没有数据!)

难道我做错了什么?

代码:

谢谢!

0 投票
2 回答
1225 浏览

haskell - 将 Data.Time.UTCTime 转换为/从 ByteString

假设我需要以Data.Time.UTCTime“%Y-%m-%d %H:%M:%S”格式多次写入/读取文件。

在我看来,使用Data.Time.formatTimeorData.Time.parseTime转换UTCTime为/从String,然后打包/解包Stringto/fromByteString会太慢,因为它涉及中间String. 但是手动编写ByteString构建器/解析器UTCTime似乎重复了很多已经在formatTimeand中完成的工作parseTime

我想我的问题是:是否有一种系统的方法可以在不重复大量工作的情况下获得类型函数t -> StringString -> t转换为函数t -> ByteString或提高效率?ByteString -> t

我完全是一个 Haskell 新手,所以如果这个问题很愚蠢,请原谅我。

0 投票
1 回答
119 浏览

haskell - 从解析字节流返回一个类型列表,其中长度直到运行时才知道

我认为这更多的是我缺乏对类型复杂性的理解。试图解决这个问题,我觉得我已经接近了几次,但还没有。

我正在尝试使用 Data.Binary 从流中读取。我已经到了下一节可能有一个或多个块的地步,但是在您开始解析流之前不知道信息。我在返回这些多个块时遇到问题。

这是代码,如果我以错误的方式进行此操作,请告诉我。但请记住,我需要能够轻松地使用相同的脚手架来写回流。

可能有用的信息:

  • 流是一个 PE 文件
  • 我正在使用镜头(fclabels)
  • DataDirectory 类型嵌套在其他类型的深处。

到目前为止,我一直避免抓取整个流并将nDirs乘以8 个字节来获取长度和解析。这当然适用于这种情况,但可能不会在其他地方降低范围。

0 投票
4 回答
644 浏览

haskell - 使单个函数适用于列表、字节字符串和文本(可能还有其他类似的表示)

我正在编写一个函数,该函数在一系列任意符号中进行一些搜索。我想让它足够通用,以便它适用于列表、Foldables 以及ByteStrings 和Texts。将其概括为Foldable很简单。但是如何包含ByteStrings 和Texts 呢?当然我可以转换ByteString成一个列表,然后调用我的函数,但我会失去所有的优势ByteString

举一个具体的例子,假设我们要创建一个直方图函数:

但由于既不ByteString是 Text 也不是Foldable(它只存储Word8s/ Chars,而不是任意元素),我坚持创建更多看起来与以前完全相同的函数,只是使用不同的类型签名:

这是在像 Haskell 这样的函数式语言中人们所不期望的。

如何使其通用,histogram一劳永逸地编写?

0 投票
1 回答
500 浏览

haskell - ByteString 或 Text 上是否有 monadic/applicative map(即 traverse/mapM)函数?

ByteStringText有标准(纯)映射函数:

但我错过了他们的一元/应用同行:

(如果我们有traverse,我们可以定义mapM f = unwrapMonad . traverse (WrapMonad . f)。)

我试着翻看包裹,试过 Hoogle,但没有找到。我忽略了什么吗?或者是否有它们丢失的原因(比如不可能/容易有效地定义它们)?

0 投票
1 回答
536 浏览

haskell - ghc中的字节串链接

考虑以下简单代码:

我安装cabal install --global bytestring然后获得(在使用 ghc 7.4.1 的新安装的 Ubuntu 12.04 机器上):

我能用它做什么?

0 投票
3 回答
405 浏览

performance - Haskell 中 hFlush 的 CPU 使用率高

我发现以下 Haskell 代码使用 100% CPU 并在我的 Linux 服务器上完成大约需要 14 秒。

另一方面,非常相似的 Python 代码在大约 3 秒内完成相同的任务。

通过使用 strace,我发现在 Haskell 版本中每次调用 hFlush 时都会调用 select。另一方面,在 Python 版本中不调用 select。我想这是 Haskell 版本慢的原因之一。

有什么方法可以提高 Haskell 版本的性能吗?

我已经尝试省略 hFlush,它确实大大降低了 CPU 使用率。但是这个解决方案不能令人满意,因为它不会冲洗。

谢谢。

已编辑

非常感谢您的帮助!通过将序列和重复更改为 replicateM_,运行时间从 14 秒减少到 3.8 秒。

但现在我有另一个问题。我问了上面的问题,因为当我从上面的程序中删除 hFlush 时,尽管它使用序列和重复重复 I/O,但它运行得很快。

为什么只有 sequence 和 hFlush 的组合使它变慢?

为了确认我的新问题,我改变了我的程序如下进行分析。

通过编译运行如下:

我得到了以下结果。

执行相同任务的 doIO 和 doIO' 有什么区别?为什么 doIOWithoutFlush 即使按顺序重复运行也很快?有没有关于这种行为的参考?

谢谢。

0 投票
1 回答
656 浏览

haskell - 如何在 Haskell 中使用 ByteString 的单个元素

我需要编写一个具有以下类型的函数

根据 的值base,子特里将以不同的方式插入特里。SSTrie 是我自己的数据类型,我知道如何使用它,但我不知道如何处理 Word8 值。

base是取自 ByteString 的单个“字符”(对于“字符”的某些值)。具体来说,它是调用indexByteString 的结果——这是我将其声明为 Word8 的唯一原因。

我无法进行模式匹配,因为没有可用的 Word8 构造函数。而且我不能让守卫工作,因为我不知道如何构造一个 Word8 常量来比较它。


[编辑] 杰罗姆的建议奏效了。但更一般地说,是否有任何好的文章展示如何使用字节字符串(和其他更底层的数据)?就像,我怎么知道关于 Word8 的事实?


[编辑-唐斯图尔特的问题]

现在我已经可以使用这样的代码了

当我将其更改为:

我收到一个错误:

import qualified Data.ByteString.Char8 as C我的文件顶部确实有。我究竟做错了什么?