Quero estudar FRP em Haskell, mas é um pouco difícil decidir sobre uma biblioteca a ser usada. Muitos parecem tentativas mortas, alguns parecem ter ressuscitado (como atividades recentes em Yampa).
Pelo que li, parece que existem dois "tipos" de FRP: FRP push-pull (como em banana reativa) de um lado e FRP com seta (como em Yampa) do outro lado. Parece que também costumava haver "FRP clássico" na época de Fran e FrTime, mas não vi nenhuma atividade recente nelas.
Essas duas (ou três) abordagens são realmente fundamentalmente diferentes da FRP?
Um deles é uma teoria ultrapassada, enquanto o outro seria o "material do futuro"?
Ou eles precisam evoluir em paralelo, abordando diferentes propósitos?
Eu nomeei a biblioteca mais importante de cada categoria ou existem outras opções a considerar (Sodium, Netwire, et al)?
Finalmente assisti à palestra de Evan Czaplicki recomendada nos comentários de J. Abrahamson. É muito interessante e ajudou a esclarecer as coisas para mim. Eu recomendo para quem achou esta pergunta interessante.
reactive-banana
é definitivamente baseado em pull e não push-pull. reactive
é push-pull. Yampa
e netwire
estão em seta. Existem FRPs que permitem "acumular valores" mas não permitem "alternar", FRPs que permitem "alternar" mas não "acumular valores". Ambos são FRP "simples". O FRP com seta permite alternar e acumular e usa setas para controlar o perigo de combinar esses recursos. O FRP monádico reactive-banana
, como,, sodium
e elerea
usa outros mecanismos cuidadosos para garantir que a troca e a acumulação não interajam demais.