Chcę uczyć się FRP w Haskell, ale wybór biblioteki jest nieco trudny. Wiele z nich wydaje się nieudanymi próbami, niektóre zostały wskrzeszone (np. Niedawna aktywność na Yampie).
Z tego, co przeczytałem, wydaje się, że istnieją dwa „rodzaje” FRP: push-pull FRP (jak w Reactive-banana) z jednej strony i FRP (jak w Yampa) z drugiej strony. Wygląda na to, że w czasach Fran i FrTime istniało również „klasyczne FRP”, ale nie zauważyłem w nich żadnej niedawnej aktywności.
Czy te dwa (lub trzy) naprawdę zasadniczo różnią się podejścia do FRP?
Czy jedna z nich jest przestarzałą teorią, podczas gdy druga byłaby „rzeczą przyszłości”?
Czy też muszą ewoluować równolegle, realizując różne cele?
Czy wymieniłem najważniejszą bibliotekę w każdej kategorii, czy też są inne opcje do rozważenia (Sodium, Netwire i in.)?
W końcu obserwowałem przemówienie Evana Czaplickiego zalecane w komentarzach J. Abrahamsona. Jest to bardzo interesujące i pomogło mi to wyjaśnić. Gorąco polecam każdemu, kto uznał to pytanie za interesujące.
reactive-banana
zdecydowanie opiera się na ciągnięciu, a nie na ciągnięciu. reactive
jest push-pull. Yampa
i netwire
są zaznaczone strzałkami. Istnieją FRP, które pozwalają na „gromadzenie wartości”, ale nie pozwalają na „przełączanie”, FRP, które umożliwiają „przełączanie”, ale nie „gromadzenie wartości”. Oba są „prostymi” FRP. Arrowized FRP umożliwia przełączanie i akumulowanie oraz wykorzystuje strzałki do kontrolowania niebezpieczeństwa połączenia tych funkcji. Monadycznego FRP jak reactive-banana
, sodium
i elerea
korzystać z innych dokładne mechanizmy w celu zapewnienia, że przejście i akumulowanie nie współpracują zbyt dużo.