2012-04-03 84 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