33

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

我花了很多时间阅读 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。

实际上,我正在寻找 Haskell 对 Java 的 Swing 的回答;一个健壮的、维护的、有据可查的、易于上手的库,尝试在外观和感觉上保持原生,可以跟上 GHC 的发展步伐,并且不会有被放弃的高风险。这似乎完全是零 GUI 框架,但似乎大多数与 GUI 框架相关的“官方”资源/wikis/页面/文档都没有得到维护,所以我决定求助于社区,看看是否有什么我只是没有找到。我并不十分担心框架是跨平台的,只要它适用于现代版本的 OS X。

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

我意识到我的“要求”有点极端,尤其是对于像 Haskell 这样的社区较小的语言,但我希望那里有人可以帮助我。同时,我打算简单地尝试摆脱 wxHaskell 或 qtHaskell,直到我成功或死亡。

我希望我不会显得粗鲁或疲惫。

4

3 回答 3

4

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

它的主要卖点是它非常易于安装,因为它使用网络浏览器作为显示器。它也很容易上手

另一方面,它甚至没有尝试拥有原生的外观和感觉——UI 完全建立在 HTML 之上。(这在未来可能会改变,因为我们可以选择使用XUL)。此外,API 仍在不断变化,因此请做好准备,该库的新主要版本可能会破坏向后兼容性。(另一方面,这意味着它正在积极开发。:-))

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

于 2014-01-01T09:08:55.837 回答
4

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

对于现代的、函数式反应式编程有趣的东西,我推荐反应式香蕉,它得到了积极的维护,并且有额外的好处,Heinrich Apfelmus本人很可能会出现在这里回答你的问题。

于 2012-12-17T23:46:16.517 回答
3

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

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

接下来,我四处寻找编译到 JVM 的 Haskell,希望它能搭载 Java 库,比如 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 发生了什么?据我所知,所有人都死了。

不好 :(

于 2012-12-15T00:33:51.413 回答