2012-04-03 14 views
26

Właśnie zaczynam zaglądać w świat Funkcjonalnego Programowania Reaktywnego w Haskell i chciałbym eksperymentować z programowaniem GUI (z gtk, ze względu na istotne wiązanie) w ustawieniu reakcyjnym.Jaki pakiet FRP wybrać?

Teraz patrzyłem trochę na Grapefruit, Reactive-Banana i Buster, i chciałbym, aby każdy testament był radością/przerażeniem przy użyciu którejkolwiek z tych paczek.

Wszystko co mam to te wstępne oppinions:

  • nie przeszkadza mi robić niektóre wiązania pakietu FRP Gtk sobie, jak mam ambivalet uczucie o pobieranej backend pomysł (który grejpfrutowy ma) ..

  • Chociaż uważam teoria typ ciekawy, ja też cenią proste kodowanie do rzeczywistych programów, które wydaje się umieścić grapfruit-rejestruje nieco off ..

To znaczy, chyba że niektórzy z was przekonują mnie, by uważać inaczej :-)

+4

"graprefuit" i "reactive-banana"? Czy istnieje pewne szczególne powinowactwo między frp a owocami? –

+1

@benw: Wierzę, że część "bananowa" jest nawiązaniem do artykułu z jednym z najbardziej zabawnych tytułów, jaki znam: [Programowanie funkcjonalne z bananami, soczewkami, kopertami i drutem kolczastym] (http://research.microsoft.com/en-us/um/people/emeijer/Papers/fpca91.pdf). – hammar

+1

@hammar: Haha, niezły! Właściwie wybrałem nazwę "banana" z różnych powodów, ale podoba mi się ta jedna wzmianka. –

Odpowiedz

18

Jeśli po prostu chcesz używać zwykłego FRP i pozostać blisko GUI, zamiast używać "gotowej" abstrakcji. Reaktywny banan jest moim zdaniem najbardziej realną opcją. Jest wyraźnie ukierunkowany na powiązanie z istniejącymi frameworkami, jest przeznaczony do użytku w "rzeczywistym świecie" (nie robi nic zbyt eksperymentalnego, semantycznie, co może powodować problemy) i tak dalej.

Możesz zajrzeć na reactive-banana-wx, aby zobaczyć, jak powiązać strukturę opartą na zdarzeniach z reaktywnym bananem. To jest bardzo proste; Napisałem szybkie powiązanie z Gtk2Hs raz (obecnie zgubiłem kod), a plik nie przekroczył 50 linii. Była to prawie bezpośrednia transliteracja kodu reaktywnego banana-wx.

Polecam przed użyciem Buster, z tego prostego powodu, że hasn't been updated since 2009, a nie opierać się na GHC 7.

Inne ramy FRP „produkcja” są zorientowane sodium (podobny do banana-reaktywnego, ale ma dynamic event switching (który jest coming to reactive-banana soon, ale jeszcze go nie ma) i koncepcję "partycji" dla współbieżności, jednak po prostu wychodzi i jeszcze nie widziano adopcji) i netwire (Arrowised FRP, całkiem inne stworzenie do reaktywny-banan i sód).

+2

: przełączanie jest w reaktywnym bananie od wersji 0.7.0.0 – AndrewC

+1

(Jednak Heinrich Apfelmus jest nadal (2013.06.20) [pracuje nad] (http://stackoverflow.com/questions/15396038/dynamic-event-switching- in-reactive-banana-causes-severe-leak # comment24927049_15396038) wyrzucanie śmieci z dynamicznego przełączania zdarzeń, więc należy teraz zachować ostrożność.) – AndrewC

12

Sam eksperymentowałem z FRP i do tej pory jedyną, która zadziałała, jest Reactive-Banana. Nigdy nie patrzyłem na Grapefruit lub większość innych osób, ponieważ były one nieaktualne i nie wydawały się być prawdopodobnie aktualizowane lub wspierane w ogóle. Spojrzałem krótko na netwire, ale szczerze mówiąc, cała teoria strzałek mnie zniechęciła i miałem wiele kłopotów, zastanawiając się, jak robić proste rzeczy.

W przeciwieństwie do tego udało mi się uzyskać całkiem niezły zestaw wiązań do SDL napisany w Reactive-Banana z kilkoma drobnymi problemami po drodze. Inną rzeczą na rzecz Reactive-Banana jest to, że Heinreich jest bardzo aktywny w społeczności i często udziela przydatnych odpowiedzi, gdy napotkasz problemy. Wystarczy przejrzeć różne pytania dotyczące bananów reaktywnych tutaj, a zobaczysz, że odpowiedział na kilka z nich i zazwyczaj jest bardzo aktywny w dyskusjach FRP na listach mailingowych Haskell.

+1

Udzielone odpowiedzi są czasami dokładnie tym, czego potrzebujesz! Dzięki! –

Powiązane problemy