【发布时间】:2013-03-09 09:46:26
【问题描述】:
我试图通过在命令行上创建 Notational Velocity 风格的 find-as-you-type 文件搜索来掌握 Haskell 的基础知识。 我没有解决整个问题,而是尝试了一个非常基本的版本: 有一个文件有 10 行,每行一个 3 个字母的单词。在我输入每个字母后,我想根据我目前的输入更新可能包含我正在输入的单词的行号列表的显示。
有人可以演示一个 Haskell 程序吗?我认为我的问题在于强制重新评估每个字符输入。提前一百万谢谢。
【问题讨论】:
-
这不是关于 Haskell 的能力,而是更多关于命令行的能力。一般来说,我认为您的代码在用户按下 [Enter] 之前无法知道命令行中写入的内容。
-
@KarolisJuodelė 我认为一个程序绝对可以做到这一点 - 例如,Vim 响应单键输入而无需按下 Enter。这样做的方法是从终端一次读取一个字符,然后更新完成或执行一些操作,这取决于按下的键是否被输入,或者可能使用某种库来制作命令行 UI,例如 ncurses(用于许多命令行程序)。
-
@DarkOtter,这就是我说“一般”的原因。我知道它可以通过依赖于平台的库(及其跨平台包装器)来完成。不过,我认为不应该鼓励使用它们——如果你想要一个合适的 UI,请使用合适的 UI 工具包。我担心初学者可能会认为控制台 UI 更容易,而实际上它通常更难。
标签: shell haskell command-line