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.