Quiero estudiar FRP en Haskell, pero es un poco difícil decidir qué biblioteca utilizar. Muchos parecen ser intentos muertos, algunos parecen haber resucitado (como la actividad reciente en Yampa).
Por lo que leí, parece que hay dos "tipos" de FRP: FRP push-pull (como en Reactive-banana) en un lado y FRP en flecha (como en Yampa) en el otro lado. Parece que también solía haber algún "FRP clásico" en el momento de Fran y FrTime, pero no he visto ninguna actividad reciente en estos.
¿Son estos dos (o tres) enfoques realmente diferentes de FRP?
¿Es una de ellas una teoría desactualizada mientras que la otra sería el "material del futuro"?
¿O tienen que evolucionar en paralelo, abordando diferentes propósitos?
¿Mencioné la biblioteca más destacada de cada categoría o hay otras opciones a considerar (Sodium, Netwire, et al)?
Finalmente vi la charla de Evan Czaplicki recomendada en los comentarios de J. Abrahamson. Es muy interesante y me ayudó a aclarar las cosas. Se lo recomiendo a cualquiera que encuentre esta pregunta interesante.
reactive-banana
definitivamente está basado en pull no pull-pull. reactive
es push-pull. Yampa
y netwire
están en flecha. Hay FRP que permiten "acumular valores" pero no permiten "conmutar", FRP que permiten "conmutar" pero no "acumular valores". Ambos son FRP "simples". Arrowized FRP permite cambiar y acumular y usa flechas para controlar el peligro de combinar esas características. Monadic FRP gusta reactive-banana
, sodium
y elerea
usa otros mecanismos cuidadosos para asegurar que el cambio y la acumulación no interactúen demasiado.