问题标签 [haskeline]

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

haskell - 具有 Haskeline 自动完成功能的模棱两可的类型变量

我正在尝试使用Haskeline实现自动完成功能:

但我对这个 GHC 错误有点失望:

我为每个函数设置了类型,但没有解决问题。

您知道这种类型的歧义从何而来以及如何消除它?

0 投票
1 回答
128 浏览

haskell - 不安全的 IO 或:Haskline 和目录

免责声明:我对 Haskell 有点陌生。

我正在写一个解释器,或者,在这种情况下,一个 REPL。为此,我使用了 haskeline,这对 REPL 来说很好。它具有将命令行历史记录存储在文件中的能力,这也很好。

但是,我在使用它时遇到的一个问题是它似乎没有将“~”扩展到主目录,这意味着我必须手动检索主目录。

我可以这样做(目前正在这样做):

但这使用unsafePerformIO,这让我畏缩。您知道不涉及重写整个函数的良好且干净的解决方法吗?这可能是haskeline我不知道的功能,也可能是我没有看到的功能。

告诉我没有办法重写和重新思考这一切也很好。

编辑:

我知道unsafePerformIO这很糟糕,这就是为什么它让我畏缩。如果你是 Haskell 的新手并且现在正在阅读这个问题:假装它不存在。

0 投票
2 回答
344 浏览

haskell - How to write ~/.haskeline so that ghci or haskeline can behave properly on `home` and `end`

My question is how to make my ghci react properly on my home and end press.

I learned that ghci use haskeline to react to user input, and haskeline's behavior is partially defined in ~/.haskeline to some extent.

I have being suffering from the lack of support for end key and home key of ghci for a long time. So I tried to define my own ~/.haskeline file.

Firstly:

Both behave as when I press a then the cursor to the most left and similarly to others.

Secondly:

It shows that my ghci seems to ignore my home and end press absolutely.

So how could I send home and end key to ghci and haskline?

0 投票
1 回答
113 浏览

haskell - 使用 mtl 的 MonadReader 和 haskeline 有类型错误

我想InputT (ReaderT Int IO) aMonadReader Int.

我写下面的代码在 InputT 上创建实例 MonadReader

但我得到这种类型的错误。

我该如何解决这个错误。

完整的源代码在这里

0 投票
1 回答
150 浏览

haskell - 带 IO 字符串的 readInputLine

我想读取带有自定义提示的输入字符串,但是提示字符串来自不纯的上下文,因此我不能readInputLine按原样使用。我试图根据这个答案实现一个功能

但我得到一个错误

更新:根据@bheklilr 的回答让它工作

0 投票
0 回答
102 浏览

haskell - 从 Input 解包 getInputLine 结果

我从 得到一个结果getInputline,其类型是:

我只想得到那Maybe String部分。我很清楚,一般来说,没有办法剥离单子,正如这个答案(以及同一问题中的其他答案)中所解释的那样。但是,由于我是在 内部进行的InputT,所以我想这是可能的,正如这里所建议的那样。但是,正如答案所暗示的那样,我不能只使用liftIO,因为IOStateT.

我得到的错误:

如果我按照@chepner 的建议直接删除getLineIO并使用:getInputLine

我收到一个错误:

完整的代码可以在这里找到,关于我想要做什么的解释可以在这里找到。

0 投票
1 回答
309 浏览

haskell - 使用来自 Haskeline 的 getInputLine 的输入

我有代码

其中 process 有类型定义

但是我得到了错误:

我想知道是否有人可以解释我做错了什么。我只想从 getInputLine 获取原始输入来做其他事情。

谢谢

0 投票
0 回答
144 浏览

haskell - Haskeline 历史顺序错误

我正在使用 Haskeline 为程序制作 CLI 界面。

我使用 Haskeline 的基本配置将描边的命令保存在文件中。

当我在命令行界面时,我可以使用上箭头来调用前面的命令。在与 BASH 或 GHCi 相同的行为下,事情运行良好。

该文件已正确写入并以正确的顺序包含命令(从第一个到最后一个)

重新启动我的程序后,我使用向上箭头调用最后一个命令,我得到....第一个!每次按上箭头时,我都会得到下一个命令(而不是上一个)。

当我重新启动我的应用程序时,我很惊讶有相反的行为。

是否可以反转命令在文件中读取的顺序?

重新启动 Haskeline CLI 程序后是否可以按正确的顺序调用命令?

0 投票
0 回答
56 浏览

haskell - 将 ansi-wl-pprint 与 haskeline 一起使用

如何在不失去 Windows 支持的情况下将ansi-wl-pprinthaskeline一起使用?

ansi-wl-pprint 有两种输出 a 的方法SimpleDoc

但是,文档警告说displayS在 Windows 上不起作用(cmd.exe不实现 ANSI 转义序列?)。

displayIO不使用 haskeline 的打印功能,但是:

我现在能看到的最接近解决方案的是:

但是,如果displayS在 Windows 上不起作用,我宁愿不使用它。

0 投票
1 回答
224 浏览

haskell - Haskell:GHCi 将 Ctrl-Y 视为 Ctrl-Z

根据 haskeline文档,键入CTRL+Y应该会从 kill-ring 中弹出最近的条目(例如,我刚刚通过CTRL+删除的行U)。相反,我发现它暂停了 REPL,就好像我输入了CTRL+一样Z

作为一种笨拙的解决方法,我发现键入CTRL+ V CTRL+Y从杀戮环中弹出作为普通的CTRL+Y应该是这样做的。

这是一个已知的错误,还是其他原因?我可以修复它吗?我正在运行 GHC 版本 8.0.2。

不确定这是否重要,但我正在通过堆栈(例如stack ghci)运行 GHCi,并且我正在酿造已安装的堆栈(macOS)。