Haskell no intenta evitar los efectos secundarios tanto como controlarlos . Esencialmente, esto significa que Haskell es bueno en la gestión del estado. En Haskell, evita usar el estado para controlar el flujo u organizar su programa, pero aún puede usar fácilmente el estado si es con lo que está modelando o trabajando. Esto significa que Haskell es perfectamente bueno para cosas como administrar una capa de persistencia (por ejemplo, una base de datos).
Por lo tanto, obtendría todas las ventajas normales que obtiene de Haskell: código expresivo, rendimiento relativamente bueno, facilidad de mantenimiento, etc. Esta es una gran ventaja para escribir las partes lógicas genéricas de su aplicación web.
También hay algunas ventajas específicas de desarrollo web. Puede usar el sistema de tipos para evitar errores comunes en las aplicaciones web. Eche un vistazo a Yesod Web Framework para Haskell, por ejemplo. Entre otras cosas, utilizan el sistema de tipos para garantizar que los enlaces internos nunca se rompan y para evitar vulnerabilidades de inyección SQL.
- ¿Es una buena idea usar Laravel y MySQL como back-end para grandes juegos?
- ¿Cuál es el futuro del desarrollador de PHP en términos de caminata y éxito?
- Cómo ejecutar una aplicación NodeJS en Digital Ocean
- ¿Cuáles son los beneficios de escribir código / variables Javascript globales como una función ejecutada en línea?
- ¿Por qué no es ilegal la ocupación de dominios?
También tiene la ventaja del nuevo subsistema IO de Haskell. Si bien muchas personas parecen pensar que Haskell es malo en IO, esto simplemente no es cierto. En todo caso, Haskell hace que trabajar con IO sea más fácil que en otros idiomas. Para la programación web, obtienes el rendimiento de un sistema asíncrono basado en eventos (como Node.js) sin tener que escribir código asíncrono basado en eventos: solo puedes usar los hilos verdes extremadamente ligeros de Haskell. El tiempo de ejecución luego usa kqueue o epoll para administrar sus hilos verdes. Estos también se pueden asignar a múltiples subprocesos del sistema operativo, por lo que es trivial usar múltiples núcleos. Este sistema puede escalar fácilmente a millones de hilos y millones de conexiones de red concurrentes.
Haskell también es un lenguaje muy flexible sin mucha repetitiva. Yesod aprovecha al máximo esto, presentándole algunas DSL muy útiles para el desarrollo web. Esto facilita la especificación de elementos como plantillas y esquemas de bases de datos en Haskell, al tiempo que conserva las ventajas de la verificación de tipos.
Entonces, con un marco web como Yesod, Haskell no solo es bueno para las partes lógicas genéricas de su programa, sino que también tiene algunas ventajas específicas para la programación web. Ofrece un mejor rendimiento, más expresividad y algunas características agradables de seguridad y robustez. Hay algunos otros marcos como Snap y Happstack, pero Yesod es el único con el que estoy familiarizado.
Como ejemplo, Yesod se utilizó para construir la Escuela de Haskell [1], y las personas que trabajan en ese proyecto estaban extremadamente satisfechas con él.
[1]: la escuela de Haskell se vuelve beta
Casualmente, la Escuela de Haskell es el lugar perfecto para aprender sobre Haskell, Yesod y hacer aplicaciones web. Tienen un soporte innovador para experimentar con las tecnologías y algunos tutoriales específicos para el desarrollo web.