Voglio studiare FRP in Haskell, ma è un po 'difficile decidere su una libreria da usare. Molti sembrano essere tentativi morti, alcuni sembrano essere stati resuscitati (come la recente attività su Yampa).
Da quello che ho letto, sembra che ci siano due "tipi" di FRP: push-pull FRP (come in Reactive-banana) su un lato e FRP arrowized (come su Yampa) sull'altro lato. Sembra che ci fossero anche dei "classici FRP" ai tempi di Fran e FrTime, ma non ho notato alcuna attività recente in questi.
Questi due (o tre) approcci alla FRP sono fondamentalmente diversi?
Una di queste è una teoria obsoleta, mentre l'altra sarebbe la "roba del futuro"?
O devono evolversi in parallelo, affrontando scopi diversi?
Ho chiamato la libreria più importante di ogni categoria o ci sono altre opzioni da considerare (Sodio, Netwire, et al)?
Alla fine ho visto il discorso di Evan Czaplicki raccomandato nei commenti di J. Abrahamson. È molto interessante e mi ha aiutato a chiarire le cose. Lo consiglio vivamente a chiunque abbia trovato interessante questa domanda.
reactive-banana
è sicuramente basato su pull non push-pull. reactive
è push-pull. Yampa
e netwire
sono arrowized. Esistono FRP che consentono "l'accumulo di valori" ma non consentono la "commutazione", FRP che consentono la "commutazione" ma non "l'accumulazione di valori". Entrambi sono FRP "semplici". FRP Arrowized consente il passaggio e l'accumulo e utilizza le frecce per controllare il pericolo di combinare tali funzionalità. FRP Monadic come reactive-banana
, sodium
e elerea
utilizzare altri meccanismi attenti a garantire che la commutazione e di accumulazione non interagiscono troppo.