问题标签 [lazy-io]

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 回答
1128 浏览

haskell - 是什么导致了这个“关闭句柄的延迟读取”错误?

我刚刚从最新来源安装了 GHC,现在我的程序给了我一条关于“关闭句柄延迟读取”的错误消息。这是什么意思?

0 投票
1 回答
104 浏览

haskell - 为什么 gnuplot plot 没有从 getContents 接收到完整的标准输入?

我遇到了惰性 IO 的问题,但我不知道如何解决它。
我在这里有三个小型测试程序,但 V2 是我真正想要的东西。
在某个地方,似乎 getContents 提前停止了,或者 gnuplot 提前完成了编写。

问题的关键是'我如何从标准输入中获取东西,并在此处使用 gnuplot 进行绘制',但我也想知道如何调试潜在问题。

版本 1,不处理 gnuplot。运行,按预期paste <(seq 10000) <(seq 10000) | runhaskell /tmp/hasktest2.hs打印。(10000.0,10000.0)显然所有标准输入都已加载。

V2:尝试绘制来自标准输入的任何内容。这与 V1 的运行方式相同 - gnuplot 生成的临时文件被截断,所以我没有得到绘图。但是,如果我使用 1000 而不是 10k 运行,它确实可以工作 - 在编写 gnuplot csv 文件时它会在某些时候被截断,所以我有一条看起来像1767.0, 1767no的行\n

V3:只是为了测试 gnuplot 是否可以实际处理 10k 点,并将它们写入文件 - 这会产生一个情节,正如预期的那样。

0 投票
1 回答
134 浏览

haskell - http-conduit、snap 和惰性 IO

我有两个使用 snap 框架的 json api 的 http-servers

我的第一个原型包含一个类似于这个示例处理程序的处理程序

如果我发出 ajax 请求,则会发送和接收响应 - 当服务器resp: testdata在控制台上写入时我会看到这一点,但发送到浏览器的响应writeLBS却不是。现在,如果我将最后一行更改为

一切都像魅力一样。我想我遇到了惰性 IO 的陷阱之一,但我不知道如何解决这个问题。

我还尝试了一些没有单liftIO块但放在liftIO必要的地方的变体。

编辑

根据@MichaelSnoyman 的评论,我做了一些研究writeLBS并试图

正如我认为的那样,缓冲可能是问题 - 不,不是

此外,我试图明确地写一个setResponseBody

这也表明没有成功。

0 投票
0 回答
389 浏览

json - 直接从 Aeson 编码输出将 JSON 作为惰性 ByteString 写入文件,而不转换为 String

目前,我正在使用类似这样的东西将 JSON 内容(my_json)写入文件(my_output_filepath):

这可行,但我想知道是否有必要将ByteString( encodePretty) 返回的 a 转换为 aString在将其写入文件之前,或者它是否会导致性能损失。

我看到有一个变体接受writeFileaByteString作为输入。但是,当我尝试使用它时,我收到此错误:

有没有办法让 的Lazy变体ByteString与之互操作writeFile

0 投票
0 回答
206 浏览

json - 在写入文件时有效地将尾随换行符添加到 Aeson 发出的 JSON ByteString

默认情况下,AesonencodeencodePretty不将尾随换行符附加到ByteString. 即,在 vim 中查看生成的文件时,我看到了[noeol]指示符。

将换行符附加到文件的高性能/惯用方式是什么?

这是一个SSCCEMain.hs

附带myproj.cabal文件:

我可以foo.json使用snocfrom 函数ByteString添加换行符,将最后一行更改为Main.hs

但是,snoc文档将其描述为 O(n) 操作。是否应该有办法在恒定时间内附加这个换行符?

0 投票
3 回答
243 浏览

haskell - Reimplementing getContents using getChar

On my journing towards grasping lazy IO in Haskell I tried the following:

which just echos all characters typed in stdin until I hit 'x'.

So, I naively thought it should be possible to reimplement getContents using getChar doing something along the following lines:

Turns out it's not so simple since the ??? would require a function of type IO [Char] -> [Char] which would - I think - break the whole idea of the IO monad.

Checking the implementation of getContents (or rather hGetContents) reveals a whole sausage factory of dirty IO stuff. Is my assumption correct that myGetContents cannot be implemented without using dirty, ie monad-breaking, code?

0 投票
1 回答
217 浏览

haskell - 为什么不打印强制整个惰性 IO 值?

我正在使用http-client教程使用 TLS 连接获取响应正文。既然我可以观察到print由 调用withResponse,为什么不print强制对以下片段中的输出进行整个响应?

我需要写这个:

我要打印的正文是一个懒惰的 ByteString。我仍然不确定我是否应该期望print打印整个值。

0 投票
1 回答
89 浏览

haskell - http-simple setRequestBodyLBS 背后的哲学

我正在尝试使用 http-simple 库开发一个 http 客户端。该库的某些实现对我来说似乎令人困惑。

这个库大量使用了 Conduit;但是还有这个“setRequestBodyLBS”函数,有趣的是,这里缺少“setRequestBodyBS”函数。据记载,Conduit 和惰性 IO 不能很好地协同工作。所以我的问题是,为什么不反过来呢?即,实现功能的BS版本而不是LBS版本?这里做出的选择背后的想法是什么?