问题标签 [haskell-streaming]

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 投票
1 回答
168 浏览

haskell - 如何通过流式 ByteString 跟踪进度?

我正在使用 streaming-utils streaming-utils 流式传输HTTP 响应正文。我想跟踪类似于bytestring-progress允许使用 lazy ByteStrings 的进度。我怀疑toChunks有必要这样做,然后减少读取的一些累积字节并返回未修改的原始流。但我无法弄清楚,流媒体文档非常无用,主要是对替代库的宏大比较。

到目前为止,这是我尽最大努力的一些代码。它还不包括计数,只是尝试在块流过时打印块的大小(并且不编译)。

0 投票
1 回答
114 浏览

haskell - 处理流媒体库中的总和编码

这个问题背后的动机是这种情况 - 我们有一个由Sum编码表示的值流。让我们假设Either ByteString ByteString我们分别代表错误和良好状态的字节流。现在,我们有另一个可以压缩ByteString流的函数。是否可以在输入流上运行此函数Either ByteString ByteString,并压缩其中一个(不仅如此,Right而且还可以LeftLeft产生而不是 的情况下Right)。compress函数类型签名如下(我使用的是Streaming):

我们的输入流是类型Stream (Of (Either ByteString ByteString)) m r。那么,是否有某种转换器函数可以compress在输入流上运行,并输出一个类型的流,Stream (Of (Either ByteString ByteString)) m r其中两者都被压缩。

在我看来,我应该写一个自定义compress,让我们说eitherCompress如下:

那是对的吗?如果是这种情况,eitherCompress使用zstd库中的以下函数编写的好方法是什么:

我已经使用 编写了stream生产者yield,但我已经为输入只是源而不是流的简单情况实现了它们。非常感谢您对这个问题的帮助。

0 投票
1 回答
76 浏览

haskell - 为流媒体库适配 Store 解码

我正在尝试StoreStreaming. Store已经decode使用名为decodeMessageBS.

我尝试如下进行store反序列化的基本实现(暂时不保持简单)。但是,因为不断抛出的逻辑似乎有问题:StreamingbracketpopperdecodeMessageBSPeekException

我可以很好地解码我的测试文件decodeIOPortionWith- 所以,问题似乎出在 feed 所需的逻辑上decodeMessageBSpopper将欣赏有关此处逻辑有什么问题的指针。

0 投票
2 回答
315 浏览

haskell - 流式传输字节串作为 WAI HTTP 服务器响应正文

我有一个值body :: BS.ByteString (ResourceT IO) (),来自一个基于BS.readFile. 我想将该值作为来自WaiApplication的响应正文进行流式传输。有一个助手,streamingResponse它接受 type 的值Stream (Of ByteString) IO r。我可以通过使用将我的转换BS.ByteString (ResourceT IO) ()Stream (Of ByteString) (ResourceT IO) ()BS.toChunks但它包含一个额外的ResourceT单子层。传递bodystreamingResponse我:

我尝试了各种方法,例如在 runResourceT 中包装东西、绑定和提升值等,但真的不知道如何进行。如果需要额外的上下文,这是完整项目中的行

更新0

hoist runResourceT body似乎类型检查。有人还向我推荐了一个 Haskell Pipes thread,这可能是一个非常相关的问题,并且可能暗示了一个解决方案。

0 投票
1 回答
66 浏览

haskell - 使用流媒体库为每个块附加延迟?

Streaming 和 Haskell 的新手。

我一直在玩流媒体库,我对理解块部分特别感兴趣。例如:

或者:

在这里,我可以在每个元素之后引入一个延迟,但我想要的是在每个块之后有一个延迟,在这种情况下,每隔一个元素就延迟一次。我试过这个但没有编译:

我怎样才能做到这一点?

0 投票
1 回答
119 浏览

haskell - 何时在流式字节串上调用 runResourceT?

我是 Haskell 初学者,仍在学习 monad 转换器。

我正在尝试使用流字节串库来读取二进制文件,处理字节块,并在处理每个块时打印结果。我相信这是一个流行的streaming库,它提供了惰性字节串的替代方案。看来作者复制粘贴了惰性字节字符串文档并添加了一些任意示例。

这些例子runResourceT没有讨论它是什么或如何使用它。似乎应该runResourceT在执行操作的任何流式字节字符串函数上使用。这很好,但是如果我正在读取一个处理块并打印它们的无限流呢?每次我想处理块时都应该调用 runResourceT 吗?

我的代码是这样的:

而且我不确定如何组织processByteChunks为遍历二进制文件的递归函数。

如果我runResourceT只调用一次,它会在打印之前读取无限文件,对吗?这似乎很糟糕。

0 投票
1 回答
161 浏览

haskell - 为什么流式字节字符串给我错误“openBinaryFile:资源耗尽(打开的文件太多)”?

streaming-bytestring库在 打印大约 512 个字节后给出错误。

错误:

代码:

0 投票
1 回答
65 浏览

haskell - 如何访问 Data.Functor.Of?

0 投票
2 回答
78 浏览

haskell - 缺少结果类型?在函数长度 :: Monad m => ByteString mr -> m (Of Int r)

我有一个简单的函数,一次读取一个字节的二进制文件。它得到一个编译时错误,如下所示。问题似乎是bs2,得到的 ByteStringBSSC.length具有未知类型。我错过了类型约束r吗?

编译时错误:

0 投票
1 回答
112 浏览

haskell - 流式库 Stream fmr 中函子背后的直觉

流式Stream库的简化(无效)定义如下所示:

我试图了解引入这个函子的动机f是什么。

一个典型的例子fOf aOf定义为

当我读到这种有意义的定义时,f就像Of aan后跟more 可以从. 有了这种解释,定义中的. 但在这种情况下,一个更简单的版本应该是StreamOf a babf (Stream f)StreamOf a (Stream (Of a))

我很难理解为什么要使用这个函子的泛化f。作者在介绍中说Stream

...可用于流式传输以任何函子为特征的连续不同步骤f

一般类型Stream f m r表示一连串的步骤......其形状由“函子”参数确定f

但在Streaming.Prelude中,我能找到的唯一函子是Or a,Stream (Of a) mIdentity。第一个是as 的流,第二个是流的流,第三个实现'erasure'

我真的不明白。我可以实现所有这些事情,即简单的as 流、流的流和擦除,而无需fStream.

这个函子f做了什么不能做的事情?