2012-04-03 44 views
26

我刚刚开始研究Haskell中的Functional Reactive Programming的世界,并且我想在反应设置中尝试GUI编程(使用gtk,因为大量绑定)。哪个玻璃钢包装可供选择?

现在,我一直在看葡萄柚,反应香蕉和巴斯特,我想要使用任何一个或其他包的快乐/恐怖的任何遗嘱。

我只有这些初步oppinions:

  • 我不介意做一些玻璃钢包的结合来GTK我自己,因为我对抽象后端想法的ambivalet感觉(即葡萄柚有)..

  • 虽然我觉得类型理论有意思,我也很看重简单的编码为实际的方案,这似乎把grapfruit-记录有点过了..

也就是说,除非你们当中有些人劝我以其他方式思考:-)

+4

“graprefuit”和“reactive-banana”? frp和水果有什么特别的相似之处? – 2012-04-03 20:14:48

+1

@benw:我相信“香蕉”部分是对我所知道的最有趣的标题之一的一篇论文的参考:[用香蕉,镜头,信封和铁丝网功能编程](http://research.microsoft。COM/EN-US/UM /人/ emeijer /说明书/ fpca91.pdf)。 – hammar 2012-04-03 20:23:42

+1

@hammar:哈哈,真好!其实我出于不同的原因选择了“香蕉”这个名字,但我喜欢这个。 – 2012-04-04 13:21:13

回答

18

如果你只是想使用普通的FRP,并且保持接近GUI框架而不是使用“预先制定”的抽象概念,在我看来,反应性香蕉是最可行的选择。它明确地针对现有框架的绑定,专为“真实世界”使用而设计(不做任何过于实验性的,语义上可能会导致问题的),等等。

你可以看看reactive-banana-wx,看看如何将基于事件的框架绑定到反应式香蕉。这很简单;我曾经写过一个快速绑定到Gtk2Hs(不幸的是,现在丢失了代码),并且该文件没有超过50行。这几乎是反应式香蕉代码的直接音译。

我会建议不要使用巴斯特,原因很简单,它hasn't been updated since 2009,并在GHC不建7

其他“生产型”玻璃钢框架是sodium(类似反应,香蕉,但它有dynamic event switching(它是coming to reactive-banana soon,但还没有)和一个概念“分区”的并发;但它只是出来,并没有看到采用)和netwire(箭头玻璃钢,一个不同的生物活性香蕉和钠)。

+2

更新:切换是在反应香蕉版本0.7.0.0 – AndrewC 2013-07-11 10:16:03

+1

(但是,海因里希Apfelmus仍然(2013.06.20)[工作](http://stackoverflow.com/questions/15396038/dynamic-event-switching- in-reactive-banana-causes-severe-leak#comment24927049_15396038)动态事件切换的垃圾回收,请谨慎使用。) – AndrewC 2013-07-11 10:41:05

12

我一直在尝试FRP自己,到目前为止唯一一个为我工作的是Reactive-Banana。我从来没有看过葡萄柚或其他大多数葡萄柚,因为它们已经过时,并且看起来似乎根本不会被更新或支持。我简单地看了一下netwire,但坦率地说,所有的箭头理论都让我失望了,而且我很难找出如何做简单的事情。

相比之下,我设法得到了一套很好的绑定到Reactive-Banana编写的SDL,并且一路上只有一些打嗝。另一件赞成Reactive-Banana的事情是Heinreich在社区中非常活跃,并且在遇到问题时经常会提供有用的答案。只需查看这里的各种反应性香蕉问题,您就会看到他对其中的很多问题做出了回应,并且他通常在Haskell邮件列表的FRP讨论中非常活跃。

+1

意见答案有时正是你需要的!谢谢! – 2015-04-21 12:05:59