¿Cuál es el compilador Haskell to JavaScript de nivel de producción más alto para escribir código que se ejecuta en el navegador?
code-translation (6)
Este lenguaje, Roy , quizás no sea realmente Haskell (?), Pero parece muy similar:
Roy parece estar vivo; hay muchos tenedores en el repositorio de GitHub: https://github.com/pufuwozu/roy
y parece estar vivo: https://github.com/pufuwozu/roy/graphs
Si está utilizando Play Framework 2.0, entonces hay un complemento, Ray , para ejecutar Roy en Play Framework 2.0:
http://brianmckenna.org/blog/ray
https://github.com/pufuwozu/ray
El último compromiso fue hace cuatro meses, lo que es bastante largo teniendo en cuenta que Play Framework 2 se lanzó hace unos 4 o 5 meses.
No estoy buscando una solución necesariamente robusta con un historial de 10 años, sino algo que se puede usar en aplicaciones reales, y va más allá de poder ejecutar un ejemplo de Hello World.
Mi preferencia es ejecutar el compilador en el servidor, por lo que puedo compilar el código Haskell antes de tiempo. Por supuesto, la solución debería ser más que un simple compilador y permitir que el código Haskell tenga acceso a la API disponible en el navegador (DOM, XHR ...).
Nota al pie: los proyectos que he visto hasta ahora no parecen mantenerse activamente, o para ir más allá de poder ejecutar "Hola mundo", o en algún caso incluso ir más allá de la descripción de un proyecto.
Hay una lista de candidatos de "la mayoría de los niveles de producción" de Yesod: https://github.com/yesodweb/yesod/wiki/Javascript-Options (Yesod es un sitio web de Haskell muy popular para que puedan saber de lo que están hablando)
Hay una lista más completa aquí:
http://www.haskell.org/haskellwiki/The_JavaScript_Problem
y también hay Fay (aunque es solo un subconjunto de haskell)
Me encontré con este proyecto llamado ghcjs
¡Parece prometedor!
Cita del README
:
Haskell a traductor de Javascript
El objetivo del proyecto es proporcionar una solución para
- compila bibliotecas modernas de Haskell a archivos Javascript y úsalas en aplicaciones Ajax o
- desarrollar toda la aplicación Ajax en lenguaje Haskell
La versión anterior del proyecto se encuentra en vir.mskhug.ru .
Puede encontrar útil esta lista: https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS
De la lista:
* UHC (Utrecht Haskell Compiler) backend converts UHC core to JavaScript, allowing the compiling of Haskell code to JS.
* YHC (York Haskell Compiler) backend, as above but with YHC core language.
* jshaskell
Sé que no es Haskell pero el script de Coffee está basado en expresiones y es bastante elegante en mi humilde opinión.
Si bien GHCJS no parece mantenerse activamente, Emscripten parece ser bastante actual.
- Emscripten compila código de bits LLVM a JavaScript.
- El backend de LLVM de GHC parece estar activamente desarrollado.
- Intuitivamente, para responder a la pregunta, la siguiente canalización podría no estar muy lejos de la "calidad de producción": lexemas Haskell (-> GHC ->) lexemas LLVM (-> Emscripten ->) JavaScript lexemas
Admitiré que esta es una publicación especulativa.