2012-01-09 14 views
10

Recientemente encontré ghcjs compilador haskell-to-javascript, pero no estoy seguro de lo "listo" que está. Parece tener poca actividad en el último año.Haskell a los compiladores de Javascript?

¿Hay un equivalente a GWT en Haskell?

Además, más de una pregunta de debate: ¿crees que habrá un equivalente de gwt haskell? ¿Por qué o por qué no?

+1

Acabo de encontrar esto cuando busco ghcjs. Hay un repositorio más nuevo: https://github.com/ghcjs/ghcjs – Nathan

Respuesta

6

Ji parece relevante, aunque no hace ninguna compilación Haskell-to-JS; permite que un servidor Haskell controle un navegador conectado a él a través de AJAX.

Parece que UHC apoya compiling to JavaScript y tiene algo de libraries along those lines, pero yo no sé lo que la compatibilidad de UHC con extensiones de GHC es como, o cómo madurar el apoyo es.

No estoy convencido de que compilar Haskell completo para JavaScript es una ruta productiva; la sobrecarga de la implementación de la evaluación perezosa similar a la de un lenguaje de alto nivel es probable que sea significativa, y todos los attempts so far (no he comprobado el código generado de UHC) parecen producir un JavaScript bastante grande (es cierto que la compresión HTTP mitiga esta).

No creo que ghcjs se esté desarrollando activamente, pero podría ser más estable que el soporte de UHC. El apoyo de Yhc parece ser el más lejano hasta ahora, pero desafortunadamente Yhc es un proyecto muerto.

+0

Guau, ¡eso es increíble! Ji, eso es. Sería extremadamente perverso si hubiera un motor de plantillas allí, y algún tipo de enrutamiento de URL. ¿Cómo en el mundo "controla" el navegador? ¡Pensé que la única manera era a través de AJAX! – drozzy

+0

@drozzy: A través de AJAX, como dije :) – ehird

+0

¡Ah, acabo de ver el pequeño archivo js oculto allí! Jaja, listo. – drozzy

8

Existen varios compiladores de este tipo que se pueden utilizar de inmediato.

  • Fay (anteriormente en http://fay-lang.org/, de ahora https://github.com/faylang/fay) El más popular y la más desarrollada Haskell -> JS compilador. AFAIU, implementa Haskell desde cero y lo compila en JavaScript. No implementa muchas de las características de GHC, especialmente las extensiones de lenguaje.
  • Haste (https://github.com/valderman/haste-compiler) Utiliza el backend de GHC para compilar a javascript. Como resultado, puede usarlo para compilar código que contenga extensiones.
+0

He hecho una [comparación muy breve de ambos] (https://www.joachim-breitner.de/blog/archives/602-Running-Circle-Packing-in-the-Browser-using-Haste.html). –

Cuestiones relacionadas