偶然的机会,有一个新兴的Haskell UI框架的Windows?
我最近看了一下这个语言,而且从我所看到的情况来看,这将是一个很好的“一次性”应用程序(精心制作的脚本)。
但是,如果没有一个好的UI框架,我不能看到它在更明显的竞争者的烟雾和镜像之下。
我读过有很多框架,但没有一个是全function的。
我只是想知道这是不是正在兴起,还是要让足够多的开发者朝着同一个方向发展呢?
两个主要框架是wxHaskell和Gtk2Hs 。 这两个都被用于实际工作。 从我知道我的偏好将是Gtk2Hs,因为它正确处理资源(即使用GC)。 wxHaskell要求程序员在不再需要的时候释放小部件,所以你可以得到所有经典的内存泄漏和陈旧的指针螺丝。
两者的问题是,一切都在IO monad中。 这反映了这样的事实:它们是用于命令式语言的现有GUI库的相对较薄的包装。 当然,这意味着你不会比使用命令式语言编写图形用户界面更糟糕,但是你也不会更好。
在Hackage上有一些有趣的实验图书馆,包括葡萄柚和Conal Elliott在GuiTV中的“有价值的价值观”。 这两个尝试更多的声明方法。
(免责声明:我是wxHaskell维护者)
wxHaskell和Gtk2H都或多或少都是完整的。 也就是说,它们都包含了其底层库提供的大量功能。 如前所述,这两者都需要IO monad中相当“迫切”的编程风格。
关于各自的相对优点已经有许多讨论。 我会说,wxHaskell是两个更容易工作,特别是在Windows上,因为它可以通过cabal安装(见http://www.haskell.org/haskellwiki/WxHaskell/Install#On_Windows )
FRP框架(葡萄柚和其他)提供了一个更“功能”的编程风格,代价是大大减少了小部件的覆盖范围。 我觉得这还是一个开放的研究领域,并没有真正准备好“黄金时段”。
在实践中,我从来没有使用wxHaskell的资源管理问题,虽然我同意这是可能的,并且是由Gtk2Hs更好地处理的区域,它使用底层库中的引用计数。
为了完整起见,我还应该提到一个Qt绑定(QtHaskell?)也存在 – 这是相当年轻的,但显然是相当完整的。
我觉得Haskell社区虽然小,但是可以很好地修复一个GUI框架,但是接受这个困难(比如许可,支持所有操作系统平台等)。
你也可以用Haskell使用wxWidgets(我的意思是C ++库)。 下面是一个例子: https ://bitbucket.org/afiskon/hs-a-star-gui/src这种方法比wxHaskell有一些优点:1.你可以使用UI生成器(Code :: Blocks,wxFormBuilder)2.你的应用程序占用更少的磁盘空间3.您可以使用wxWidgets的所有功能。
还应该注意的是,wxHaskell的最后一个版本使用了wxWidgets 2.9,它可能永远不会移植到Debian上: http ://bugs.debian.org/cgi-bin/bugreport.cgi?msg=16;bug=613431