【问题标题】:Haskell `ncurses` libraryHaskell `ncurses` 库
【发布时间】:2013-03-02 15:15:41
【问题描述】:

我想在我的 Haskell 程序中使用基于文本的 UI。我为 ncurses 库找到了一些绑定(另见 hscurses or ncurses, which one to use?)。 hscursesnanocurses 包只是 C 库的简单包装器,而 vty 没有很好的文档记录并且有点难看(例如混合蛇案例和 CamelCase)。

Hackage 上的 ncurses 库看起来更漂亮,并且提供了非常适合 Haskell 的 API。问题在于它似乎没有实现一些关键功能,例如调整窗口大小或刷新窗口。

所以我的问题是:

  • 是否还有其他我错过的 Haskell 文本 UI 库,无论是否基于 ncurses?
  • 如果没有人,是否可以扩展ncurses Haskell 库以至少支持窗口刷新和调整大小? (这个可能要和项目负责人商量一下,不过我需要快点解决)

编辑:

我终于使用了没有窗口(和面板)的nscurses 来避免刷新它们的麻烦。我在输出到窗口右下角时遇到了问题(Python's ncurses binding 报告了一个非常相似的问题)。我通过不在那里写来解决它:)。

【问题讨论】:

    标签: haskell ncurses


    【解决方案1】:

    你看过vty-ui吗?它有一个很好的用户手册,里面有很多例子。我相信它本质上是对 vty 的封装。

    【讨论】:

    • vty-ui 不安装在 Windows 上,因为它依赖于 unix 包。
    【解决方案2】:

    我已经成功使用了 nanocurses 和 hscurses,我的 hmp3 应用有一个 binding,这是 nanocurses 的基础。

    无论如何,您都可能想要一个不错的高级 API。 hscurses 至少有一个盒子抽象。

    你可以使用 hscurses。

    【讨论】:

    • 好吧,我的程序的主要目标是展示 Haskell,我想我会使用 ncurses 中的抽象(如 monad CursesUpdate)来表明 Haskell 中的编程是比 C 更漂亮。但hscurses 与纯 C ncurses 处于同一“级别”,因此将其用作 Haskell 的演示没有多大意义。我会尝试扩展ncurses;如果我失败了,我会使用hscurses :)。
    • curses 库是低级的。我看不到通过显示终端 blitting 来展示 Haskell 的好方法 :) 你可能会有更好的运气,例如FRP guis 或图像处理...
    • 我想使用基于 ncurses 的交互界面作为更大程序的一部分(在有移动障碍物的迷宫中寻找路径)。现在,它只是打印找到的终端路径,我认为支持单步执行找到的路径会很酷:)。
    • @honzasp:也许你可以使用projects.haskell.org/diagrams 来显示迷宫路径——这非常优雅的Haskell
    • 在之前的项目中,由于它是 GPL 许可证,我无法使用 ncurses。我用 vty 效果很好,不费吹灰之力。
    【解决方案3】:

    haskell 中基于文本的用户界面还有另一个不错的选择;

    Brick 由 jtdaugherty 编写,开发 vty-ui 的同一人现已弃用。

    API 是Declarative,它更适合展示像 Haskell 这样的语言。 Documentation 也很棒而且很完整。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 2017-01-03
      • 1970-01-01
      相关资源
      最近更新 更多