为Haskell积极开发和记录良好的GUI工具

时间:2012-12-14 22:35:12

标签: user-interface haskell

我早上和下午花了大部分时间在Haskell中使用GUI框架,因为我需要一些可视化和交互功能,而且我不喜欢在Haskell中编写我的核心功能然后滚到一个前端用另一个GUI写的;我宁愿用一种语言来做这一切。更好的部分中更好的部分用于编译和修补源代码,或者用Google搜索模糊的编译错误。

我花了很多时间阅读SO问题,在haskell.org上花了很多时间,并且有充足的时间阅读文档。我遇到的是一大堆过时或记录不完整的信息。我可以归结为这三件事:

  1. 在Gtk +绑定之上构建的大量选项。我不太关心Gtk +,主要是因为我发现它看起来非常不愉快,特别是在OS X上。抓住UI看起来不合适和/或只是丑陋看起来很愚蠢,但这对于我。特别是如果我希望其他人使用我创建的任何程序。

  2. wxHaskell,它稳定且非常容易安装,但许多现有教程似乎适用于wx-0.1x,并且将wxWidgets 2.9.x文档桥接到wx-0.90.x的惯例非常非常当它们存在时,参差不齐并且难以理解。

  3. qtHaskell,似乎大部分被放弃了(如果我错了,请纠正我),在应用一年之久的补丁后只编译更新版本的GHC,并吐出大量警告,表明他们很快就会在较新版本的GHC中出现编译错误。

  4. 实际上,我正在寻找Haskell对Java Swing的回答;一个强大,维护,文档齐全,易于入门的图书馆,尝试在外观和感觉上保持原生,可以跟上GHC的发展速度,而不是放弃的高风险。这似乎完全是零GUI框架,但似乎与GUI框架相关的大多数“官方”资源/ wiki / pages / docs都很糟糕,所以我决定转向社区,看看是否有什么我只是没找到。我不是非常担心这个框架是跨平台的,只要它适用于现代版本的OS X.

    重申一下,我并不是真的想找个人给我发送一个指向haskell.org或WikiBook的链接。我去过那里,我不喜欢我所看到的。那里的大部分信息都是过时的,它只能创造更多的工作,而不是更少。

    我意识到我的“要求”有点极端,特别是对于像Haskell这样的小社区的语言,但我希望那里的某个人可以帮助我。与此同时,我打算只是试着骑出wxHaskell或qtHaskell直到我成功或死亡。

    我希望我不会粗暴或疲惫不堪。

3 个答案:

答案 0 :(得分:4)

wxHaskell很好,是的,还有我的GUI中级库。我承认在新版本的文档之前一直关注更新代码。

对于现代的,功能反应式的编程有趣的东西,我为reactive banana进行了积极维护,并且有Heinrich Apfelmus他自己可能会在这里回答的额外好处你的问题。

答案 1 :(得分:4)

Threepenny-gui是Haskell GUI库中最新的竞争者。

它的主要卖点是它易于安装,因为它使用Web浏览器作为显示器。 get started使用。

也很容易

另一方面,它甚至没有尝试具有原生外观 - UI仅基于HTML构建。 (这可能在将来发生变化,因为我们可以选择使用XUL)。此外,API仍然非常不稳定,因此请准备好库的新主要版本可能会破坏向后兼容性。 (另一方面,这意味着它是积极开发的。: - ))

(披露:我是threepenny-gui包的作者/维护者。)

答案 2 :(得分:3)

我感受到你的痛苦;这个答案试图提供一些可能足够好的替代方案,也许可以帮助您进行搜索。

首先,有一种名为Concurrent Clean的语言。它应该类似于Haskell,具有GUI支持,用于编写真实世界的应用程序。它在某些方面有所不同;例如,它的I / O基于独特的类型,而不是Monads,就我而言,这是一件好事:)。这是一个链接: http://wiki.clean.cs.ru.nl/Clean

接下来,我挖掘了一个编译到JVM的Haskell,希望它可以依赖于Java库,ala Clojure。没有骰子。我找到的是一个讨论缺乏和挑战的SO线程: Haskell on JVM?

然而,从该线程中提出了另外两个选项。一个是弗雷格: http://code.google.com/p/frege/

另一个是CAL: https://github.com/levans/Open-Quark

在Haskell中还有关于功能反应式编程的工作。它应该启用像GUI这样的东西,不管你是否真的从中获取GUI是另一回事: http://www.haskell.org/haskellwiki/Functional_Reactive_Programming

很伤心。在这里,我们有JVM和.NET,而且还有针对Haskell的zilch。它比那更糟糕; .NET已经显示出一种令人担忧的趋势,即放弃有希望的实现。无论IronScheme,IronLisp和IronHaskell发生了什么?据我所知,一切都死了。

不好:(