gpt4 book ai didi

haskell - 如何在 GHCI 内多次从标准输入读取多行?

转载 作者:行者123 更新时间:2023-12-02 13:58:04 27 4
gpt4 key购买 nike

与“学习haskell”中的信息相反,在我的Windows系统上,ghci将CTRL-D翻译为EOT,而不是EOF.

因此,当我做类似的事情时:

input <- getContents
doSomething input

,其中 doSomething 是一个消耗输入的函数。
为此,我必须按 CTRL-Z 结束输入文本,这是有道理的,因为 getContents 用于流程管道...

但是如果我第二次重复上述步骤,就会失败,因为 stdin 已关闭。

所以,在浏览 System.IO 时,我找不到 getContents 的替代方案,它会对 EOT 使用react。

我必须自己编写这样的函数还是可以在另一个包中找到它?

顺便说一句,我使用的 GHCI 版本是 8.2.2
另外,我不想单行处理。我知道 getLine 但在本例中这不是我想要的。

最佳答案

这是我正在寻找的功能:

getContentsEOT :: IO String
getContentsEOT =
getChar >>= \c ->
if c == '\EOT'
then return ""
else getContentsEOT >>= \s ->
return (c:s)

关于haskell - 如何在 GHCI 内多次从标准输入读取多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56219779/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com