haskell frp reactive-banana

haskell - ¿Qué paquete de FRP elegir?



reactive-banana (2)

Si usted solo quiere usar FRP regular y permanecer cerca del marco de la GUI en lugar de usar una abstracción "prefabricada" sobre él, reactivo-banana es la opción más viable, en mi opinión. Está orientado explícitamente a vincularse con los marcos existentes, está diseñado para su uso en el "mundo real" (no hacer nada demasiado experimental, semánticamente, que podría causar problemas), etc.

Puede echar un vistazo a reactive-banana-wx para ver cómo enlazar un marco basado en eventos a reactive-banana. Es muy sencillo; Escribí un enlace rápido a Gtk2Hs una vez (perdí el código ahora, desafortunadamente), y el archivo no pasó de 50 líneas. Era casi una transcripción directa del código reactivo-banana-wx.

Recomendaría no usar Buster, por la sencilla razón de que no se ha actualizado desde 2009 y no se basa en GHC 7.

Otros marcos de FRP "orientados a la producción" son el sodium (similar al reactivo-banano, pero tiene un cambio dinámico de eventos (que pronto llegará al reactivo-banano , pero aún no está disponible) y un concepto de "particiones" para la concurrencia; sin embargo, acaba de salir y aún no se ha visto la adopción) y netwire (FRP con flecha, una criatura muy diferente a la reactiva de banano y sodio).

Estoy empezando a estudiar el mundo de la Programación reactiva funcional en Haskell, y me gustaría experimentar con la programación GUI (con gtk, debido a un enlace sustancial) en una configuración reactiva.

Ahora, he estado mirando un poco a Grapefruit, Reactive-Banana and Buster, y me gustaría cualquier testimonio de la alegría / el horror de usar uno u otro paquete.

Todo lo que tengo son estas opiniones preliminares:

  • No me importa hacer parte de la vinculación del paquete FRP a gtk, ya que tengo una sensación ambivalente acerca de la idea abstracta del backend (que Grapefruit tiene).

  • Si bien la teoría de tipos me parece interesante, también valoro las codificaciones simples para los programas reales, lo que parece hacer que los grapfruit-graben un poco.

Es decir, a menos que, por supuesto, algunos de ustedes me persuadan a pensar lo contrario :-)


Yo mismo he estado experimentando con FRP y hasta ahora el único que me ha funcionado es Reactive-Banana. Nunca miré la Toronja o la mayoría de las otras porque estaban desactualizadas y no parecía que estuvieran actualizadas o soportadas en absoluto. Miré brevemente a netwire, pero, francamente, toda la teoría de la flecha me desanimó y tuve muchos problemas para descubrir cómo hacer cosas simples.

En contraste, me las arreglé para obtener un buen conjunto de enlaces a SDL escritos en Reactive-Banana con solo algunos inconvenientes en el camino. Otra cosa a favor de Reactive-Banana es que Heinreich es muy activo en la comunidad y, con frecuencia, proporcionará respuestas útiles cuando tenga problemas. Solo mire las diversas preguntas sobre el banano reactivo aquí y verá que ha respondido a algunas de ellas y generalmente es muy activo en las discusiones de FRP en las listas de correo de Haskell.