问题标签 [haskell-pipes]
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 - 在管道内运行单态消费者
已经问过如何Consumer
在 aPipe
Consumer'
中运行 a 的问题,但随后提供的答案需要多态类型同义词:
现在,我遇到的问题是 in Pipes.Vector
,toVector
使用单态Consumer
同义词:
因此toPipe
,该答案中的功能在这种情况下将不起作用:
有什么建议么?toVector
也许是不必要地狭窄的签名?(我是一个太多的管道菜鸟来告诉... 编辑:我尝试将签名更改pipes-vector
为Consumer'
; 代码编译,但它看起来vectorPipe
永远不会产生。)
json - 使用 Haskell 对一个巨大的 json 数组进行二次采样
我有一个巨大的 Json 文件,我想避免完全加载到内存中。它的结构非常简单:它由一个包含任意元素的大数组组成。我只是想通过随机删除大部分元素来转换数组,并简单地输出转换后的 Json。
Haskell 似乎很适合这个懒惰的问题,我认为它会是一个很好的 Haskell 练习(我不是专家,我不太了解 FP 理论)。
我发现 pipe-aeson [1] 这似乎是我想要的,但在尝试了一段时间后,我不得不承认我被卡住了。几乎没有示例,虽然我可以使用 Pipes 对数据进行下采样,但使用 Parser 对象似乎更复杂。我发现的选项 (evalStateT) 是严格的,并且会解析整个事情,而不会让我干预。
也许镜头可以解决我的问题,但它们非常抽象,我不知道它们是什么,也不知道如何使用它们。
比我更有知识的人可以提供一些指导吗?
[1] https://hackage.haskell.org/package/pipes-aeson-0.4.1.3/docs/Pipes-Aeson.html#t:DecodingError
haskell - 在 Haskell 中使用 Pipes 读写二进制数据
我正在尝试在常量内存中读写很多整数。我已经弄清楚如何将整数写入内存,但还没有弄清楚如何将它们读回。
我从Pipes.Binary的文档中获得了解码器功能。但是drawAll
,根据文档 drawAll
,它使用的不是管道的惯用用法,而是出于测试目的而提供的。
我的问题是如何修改decoder
以使其不使用drawAll
,因此不会将所有值加载xs
到内存中。因此,我可以通过从文件中读取P.map print
的解码流来代替打印 xs 列表。ints
http - 将 WAI 流与安全管道交错
我正在使用管道和 WAI 来传输音频。问题是我需要先查看安全管道中的一些数据,然后根据提取的信息选择响应标头,然后继续将该管道作为响应主体进行流式传输。这是我现在所拥有的,并且工作正常:
respond
是标准Application的函数参数,Mpeg.headerFromPipe
是我的前瞻性计算:
所以问题是:有什么方法可以在和用于选择标题respond
之间移动。我无法拆分并分成两个不同的 SafeT计算线程,因为首先将完成管道和管道(这是执行几次、检查数据、返回内容并与其余部分链接的结果)将失败。headerFromPipe
for
mph
responseStream
headerFromPipe
for
runSafeT
chunks
next
haskell - 向下游发信号表明上游已用尽
问题
使用 Haskell管道库,我试图Pipe
用以下类型定义一个:
其中Value
数据类型定义为:
管道应遵守以下规律:
换句话说,管道应该等价于Pipes.Prelude.map Value
,除了它应该Exhausted
在所有上游值都被处理后产生一个额外的,让下游有机会执行一些最终操作。
可以这样Pipe
定义吗?
例子
笔记
我知道该pipes-parse
库提供了函数draw
和parseForever
. 这些看起来很有用,但我不太明白如何将它们组合成Pipe
符合上述规范的。
haskell - 如何使用管道将双标签替换为单标签?
我需要用单个选项卡替换字节字符串中的所有连续选项卡,如下所示:
变成
我不知道该怎么做。
经过半个小时的思考,我设法替换了第一次出现的双标签,就像这样(即使这实际上是错误的——它在一个空字符串中添加了一个标签):
但是,我仍然不知道如何替换所有出现的连续标签。
haskell - 使用 Haskell Pipes 嵌套一个先前扁平化的流
背景
我有一长串大文件,我想将其内容流式传输到恒定内存中。
我正在使用Haskell Pipes 库使用以下嵌套类型对该流进行建模:
换句话说,外部生产者迭代文件,内部生产者迭代文件块。
问题
出于会计目的,我想暂时将此嵌套流扁平化为具有以下类型的内容:
在哪里:
编写一个函数来执行这种转换似乎很容易:
但是,我不确定如何编写逆变换:
这样:
nestFlattenedStream
可以定义函数吗?
haskell - 为什么“效果”只密封两个流入,而不是所有流?
下面是packageEffect
官方教程中提供的示意图。pipes
由于Effect
没有任何数据流,我希望它只是Proxy X X X X
,密封所有流。但相反,它允许两个流入。有什么特别的原因吗?如果我只是写 aEffect
通常做的事情,使用 signature Proxy X X X X
,它可以很好地通过编译器:
为什么我们不能run
这样?
json - 使用管道将值序列化为 JSON 数组
我想将传入的值序列化为 JSON。每个值都有一个toJSON
实例。最终结果应该是一个列表。当前代码如下:
问题是这样每一行都包含一个有效的 JSON 对象,但我希望整个结果是可解析的。我希望在第一个对象[
输出一个字符之前,然后是每个元素后跟一个逗号,最后是另一个]
. 我怎么能用管道做到这一点?
电流输出:
期望的输出:
我找到了pipes-aeson,但我不明白我应该如何使用它提供的功能。
编辑:我修改了 ErikR 的答案以获得 a Consumer
,但它不输出右括号:
我不明白为什么。