2012-04-03 9 views
26

Ich beginne gerade in die Welt der funktionalen reaktiven Programmierung in Haskell zu schauen, und ich würde gerne mit GUI Programmierung (mit gtk, wegen der substantiellen Bindung) in einer reaktionalen Umgebung experimentieren.Welches FRP-Paket wählen?

Jetzt habe ich ein wenig auf Grapefruit, Reactive-Banana und Buster geschaut, und ich möchte jedes Zeugnis der Freude/des Entsetzens der Verwendung des einen oder anderen Pakets.

Alles, was ich habe, ist diese vorläufigen oppinions:

  • Ich habe nichts dagegen, einige der Bindung des FRP-Paket zu tun, mich zu GTK, wie ich ein ambivalet Gefühl über die abstrahierte Backend-Idee (das Grapefruit hat) ..

  • Während ich Typ Theorie interessant finde ich auch Wert auf einfache Codierungen für aktuelle Programme, die zu setzen scheint grapfruit zeichnet ein bisschen off ..

Das heißt, es sei denn, einige von Ihnen überzeugen mich, anders zu denken :-)

+4

"grapefuit" und "reactive-banana"? Gibt es eine besondere Affinität zwischen frp und Obst? –

+1

@benw: Ich glaube, der Teil "Banane" ist ein Verweis auf ein Papier mit einem der amüsantesten Titel, die ich kenne: [Funktionale Programmierung mit Bananen, Linsen, Umschlägen und Stacheldraht] (http://research.microsoft.com/de-de/um/menschen/emeijer/Papers/fpca91.pdf). – hammar

+1

@hammar: Haha, schön! Eigentlich habe ich aus verschiedenen Gründen den Namen "Banane" gewählt, aber ich mag die eine Erwähnung. –

Antwort

18

Wenn Sie nur regelmäßige FRP verwenden möchten, und bleiben Sie in der Nähe des GUI-Framework, anstatt eine "vorgefertigte" Abstraktion darüber reaktive Banane ist meiner Meinung nach die machbarste Option. Es ist explizit darauf ausgerichtet, an existierende Frameworks gebunden zu werden, ist für den Gebrauch in der "realen Welt" ausgelegt (es wird nichts zu experimentell, semantisch gemacht, das könnte Probleme verursachen) und so weiter.

Sie können unter reactive-banana-wx nachsehen, wie Sie ein ereignisbasiertes Framework an reactive-banana binden können. Es ist sehr einfach; Ich habe einmal eine schnelle Bindung an Gtk2Hs geschrieben (leider jetzt den Code verloren), und die Datei ging nicht über 50 Zeilen. Es war fast eine direkte Transliteration des reaktiven Bananen-wx-Codes.

ich empfehlen würde gegen Buster verwenden, aus dem einfachen Grund, dass es hasn't been updated since 2009 und bauen nicht auf GHC 7.

Andere „produktionsorientierte“ FRP-Frameworks sind sodium (ähnlich reaktiv-Banane, aber es hat dynamic event switching (das ist coming to reactive-banana soon, ist aber noch nicht) und ein Konzept von "Partitionen" für Nebenläufigkeit; es ist jedoch nur herausgekommen und hat Adoption noch nicht gesehen) und netwire (pfiffig FRP, eine ganz andere Kreatur zu reaktive Banane und Natrium).

+2

update: Switching ist in reaktivem Banane ab Version 0.7.0.0 – AndrewC

+1

(Heinrich Apfelmus ist immer noch (2013.06.20) [in Arbeit] (http://stackoverflow.com/questions/15396038/dynamic-event-switching- in-reactive-banana-Ursachen-schwere-Leckage # comment24927049_15396038) die Garbage Collection von dynamischen Ereigniswechsel, also mit Vorsicht im Moment verwenden.) – AndrewC

12

Ich habe mit FRP selbst experimentiert und bis jetzt ist die einzige, die für mich gearbeitet hat, Reactive-Banana. Ich habe Grapefruit oder die meisten anderen nie gesehen, weil sie veraltet waren und nicht so aussahen, als würden sie überhaupt aktualisiert oder unterstützt werden. Ich habe kurz auf Netwire geschaut, aber offen gesagt, die ganze Pfeiltheorie hat mich davon abgehalten und ich hatte große Schwierigkeiten herauszufinden, wie man selbst einfache Dinge macht.

Im Gegensatz dazu habe ich es geschafft, ein ziemlich gutes Set an Bindungen zu SDL zu bekommen, geschrieben in Reactive-Banana mit nur ein paar Schluckaufchen auf dem Weg. Eine andere Sache, die für Reactive-Banana spricht, ist, dass Heinreich sehr aktiv in der Community ist und oft hilfreiche Antworten liefert, wenn Sie Probleme haben. Sehen Sie sich hier die verschiedenen Fragen zu reaktiven Bananen an und Sie werden sehen, dass er auf einige von ihnen reagiert hat und er ist normalerweise sehr aktiv in FRP-Diskussionen in den Haskell-Mailinglisten.

+1

Optimierte Antworten sind manchmal genau das, was Sie brauchen! Vielen Dank! –

Verwandte Themen