Haskell `ncurses`库

15
我希望在我的Haskell程序中使用基于文本的UI。我找到了一些ncurses库的绑定(也可以看看hscurses或ncurses,哪一个要使用?)。hscursesnanocurses包只是C库的简单封装,而vty没有很好的文档,而且有点丑陋(例如混合使用snake_case和CamelCase)。
Hackage上的ncurses库看起来更漂亮,并提供了适合Haskell的API。问题是它似乎没有实现一些关键功能,比如调整大小或刷新窗口。
因此,我的问题是:
  • 是否有其他Haskell文本UI库,无论是基于ncurses还是不基于ncurses,我错过了吗?
  • 如果没有任何人,是否可能扩展ncurses Haskell库至少支持窗口刷新和调整大小?(这可能应该与项目所有者商量,但我需要快速解决方案)

编辑:

我最终使用了nscurses,而没有使用窗口(和面板)来避免刷新它们的麻烦。我在窗口的右下角输出时遇到了问题(Python的ncurses绑定报告了非常类似的问题)。我通过不在那里写入解决了这个问题 :).

3个回答

9

你看过vty-ui吗?它有一份非常好的用户手册,其中包含大量示例。我认为它本质上是vty的包装器。


vty-ui无法在Windows上安装,因为它依赖于“unix”软件包。 - MichalAntkiew

3

在Haskell中,有另一个很好的文本用户界面选择;

Brick由jtdaugherty编写,他也开发了现已弃用的vty-ui。

该API是声明式的,更适合呈现像Haskell这样的语言。此外,文档也非常全面。


3
我已经成功使用了nanoncurses和hscurses,我的hmp3应用程序有一个binding,是nanocurses的基础。
无论如何,您可能需要一个不错的高级API。 hscurses至少具有框抽象。
您可以选择使用hscurses。

我的程序的主要目标是展示Haskell,我想利用ncurses中的抽象(如CursesUpdate单子)来显示在Haskell中编程比C更漂亮。但是hscurses与纯C ncurses处于同一“级别”,因此将其用作Haskell的演示没有太多意义。我将尝试扩展ncurses;如果失败了,我会使用hscurses :). - Jan Špaček
curses库是低级别的。我不认为通过显示终端blitting来展示Haskell有好的方式 :) 也许你可以尝试使用FRP GUI或图像处理等其他方法... - Don Stewart
我想在一个更大的程序中使用基于ncurses的交互式界面(在迷宫中寻找移动障碍物的路径)。目前,它只是将找到的路径打印到终端上,我认为支持通过找到的路径进行步进也很酷 :)。 - Jan Špaček
@honzasp:也许你可以使用http://projects.haskell.org/diagrams/来展示迷宫路径——这是非常优雅的Haskell。 - amindfv
1
在之前的项目中,由于ncurses采用GPL许可证,我无法使用它。但我很轻松地使用了vty并取得了良好效果。 - timbod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接