问题标签 [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 回答
460 浏览

haskell - Haskell:如何使用 haskeline 并在同一个程序中写入文件

我在 Haskell 中编写了一个程序,它在当前目录中将吉他标签构建为 txt 文件。它从用户那里获取一串和弦,然后构建正确的输出并将其逐行写入文件。

当我使用 getLine 时,我无法在输入中使用退格键,因为它会在屏幕上打印一堆乱码。

我正在尝试使用 haskeline 来解决这个问题,同时我注释掉了我的主要方法的大部分,以便每次更改都需要更少的编辑(我在“main”中注释掉的每个命令都与单个命令的类型相同我保留了,所以如果我能让这个简化版本工作,整个事情应该工作)。基本上,我需要能够使用 haskeline 从用户那里获取输入,但是之后我还需要在我的“do”块中运行一些“副作用”命令。

我是 Haskell 的新手,我不完全理解什么是允许的,什么是不允许的,或者为什么。这是我的程序的简化版本:

我直接从 Haskeline 教程中获得了所有这些语法。我尝试在不先进行任何更改的情况下运行它并且它有效,所以我知道这一切都是正确的——除了我编辑的最后 3 行,我有“do”块并试图在“之前”调用“writeFile”返回()”。

我知道“循环”的类型必须是 InputT IO () 才能使用 getInputLine(getLine 的 haskeline 版本),但我不知道如何完成“副作用”,比如同时写入文件时间。

当我尝试在 ghci 中加载我的项目时,我收到以下错误:

0 投票
1 回答
108 浏览

haskell - 如何在 Haskeline 运行时更改 Tab 完成的内容?

我想写一个文本界面,它提供了一些默认的命令。该程序支持这些命令的制表符完成。

该程序还记录用户输入并将其存储在StateData. 现在我希望这个程序支持这些用户输入的选项卡完成。例如:

是否可以在不使用不安全机制的情况下做到这一点IORef?有没有办法将更新stloop(in repl) 传递到replSettings startState(in repl)?

我是 Haskeline 的新手,感谢您的宝贵时间。

0 投票
0 回答
82 浏览

haskell - 带有列表的 Haskeline 单词完成

Haskell新手在这里也是第一次在这里提问,对于我可能错过的任何事情提前道歉。

我正在编写一个 repl 函数,该函数接受用户输入,将输入添加到列表中,并使用 haskeline 使用先前输入的单词来完成用户输入。

到目前为止,我只能使用在运行时之前定义的静态列表来完成单词。

1-如何将输入单词添加到 repl 列表中(已解决...?)

2- 如何启用 searchFunc 来查询 repl 循环中的列表?

我当前的代码:

任何帮助表示赞赏,在此先感谢。

0 投票
1 回答
109 浏览

haskell - Haskeline 在堆栈构建中引发链接错误

我正在尝试通过stack build命令构建haskell项目,但它抛出异常:

它还在日志文件中输出以下错误:

我的代码在 .hs 文件中没有任何错误。我也可以通过调用任何函数(甚至是主函数)stack ghci,它工作正常。经过一些研究,我发现如果我从文件中haskeline的依赖项中删除,将在没有任何问题的情况下执行。%project name%.cabalstack build

haskeline只在 app/main.hs 中使用,我的代码来自这个站点。这里是

这是 .cabal 文件的一部分,我在其中添加了 haskeline:

haskeline 的版本无关紧要。我试图设置以前的版本,但每个版本都发生了错误。我试图用谷歌搜索问题,但似乎以前没有人遇到过,或者问起来太琐碎了。我正在使用 linux mint,也许它会以某种方式影响。我完全重新安装了堆栈,但问题仍然存在。删除项目中的 .stack-work 等临时文件也无济于事