¿Cómo se compara Elm con ClojureScript?


Estoy llegando a un punto donde la GUI codifica con Backbone.el patrón MVC orientado a objetos de js se está volviendo bastante complejo, y mirando a su alrededor otros paradigmas. MDV, FRP, ECS , oh mi.

¿Cómo se compara Elm con ClojureScript? ¿Dónde se superponen?

Ambos son lenguajes muy diferentes de JS que compilan a JS. Entiendo que Elm es un lenguaje de programación reactiva funcional (FRP). ClojureScript no es necesariamente FRP, pero usted puede hacer FRP con él. Elm compila con Haskell y ClojureScript con la JVM, por lo que ambos son requisitos adicionales para una tienda de nodos.

Tal vez solo se reduce a Clojure vs Haskell.

Author: Community, 2013-08-23

3 answers

Ambos obligan a usar un estilo de programación más declarativo/funcional que JS puro. ClojureScript es más como un reemplazo de JS, mientras que Elm es más como un reemplazo para toda la pila de desarrollo web (HTML / CSS / JS).

Otras diferencias:

  • La sintaxis de Elm es mucho más parecida a Haskell
  • ClojureScript está mucho más cerca de la sintaxis Lisp tradicional
  • Elm está altamente optimizado para valores variables en el tiempo ("señales" en Elm)
  • ClojureScript es más maduro y puede encontrar algunas herramientas de desarrollo dulces para él (plug-ins Eclipse, LightTable, etc.)
  • Elm se escribe estáticamente, ClojureScript se escribe dinámicamente

Espero que esto ayude. Todavía estoy aprendiendo ambos idiomas, así que puede que me haya perdido algo.

 37
Author: hoosierEE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-02 02:12:30

Solo para actualizar esto para 2017.

Elm ya no es FRP, que desapareció hace unos lanzamientos a favor de la arquitectura Elm.

La principal victoria de Elm es que tiene un sistema de tipo estático que permite al compilador hacer muchas afirmaciones sobre la corrección del programa en tiempo de compilación. Por ejemplo, usted sabe a ciencia cierta que nunca habrá un momento en el que una declaración de caso no cubra un caso específico. O que el HTML de la función view producirá un evento que la actualización no sabe cómo lidiar con eso.

Otras ventajas del olmo

  • Grandes mensajes de error
  • Los paquetes han forzado el Versionado semántico
  • Los paquetes y herramientas tienden a tener nombres muy obvios
 10
Author: Zachary K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-20 13:12:18

Ambos son FRP (Programación Reactiva Funcional) en su núcleo, lo que significa que tienen un árbol asignado al DOM y solo renderizan ese componente o hijos que necesitan ser renderizados. (como alguien señaló anteriormente, Elm ha abandonado los principios de FRP para perseguir su propia idea de ellos)

Ambos compilan en JavaScript (aunque con la biblioteca ClojureScript/Om o Reagent podrías obtener objetos React reales en tu js) mientras que Elm hace lo suyo. No me gusta que el Olmo tenga que ser instalado a través de npm aunque czapliki, según tengo entendido, está trabajando en un instalador independiente)

Elm es más agradable en mi opinión porque maneja el estado un poco más amigable con el codificador y tiene una sintaxis muy agradable (como se mencionó --) como Haskell y también mueve el RuntimeErrors al CompileTimeErrors, que es mucho más agradable como desarrollador, además de que tiene una capacidad de mantenimiento de código más fácil.

Por otro lado, cljs tiene bibliotecas lotsa-algunas de ellas como he mencionado volver componentes reales de React (cljs/Om coincide 1: 1 con el ciclo de vida de R. js): otros simplemente respetan el FRP y la mentalidad del ciclo de vida sin verse obstaculizados por él. Puede que desee buscar en Om / Next with tiene una forma de GraphQL de llamar a los datos de un punto final y ha eliminado las chans asíncronas que se utilizaron en cljs / Om.

Es una cuestión de gusto para ser honesto, pero yo preferiría Olmo (habiendo escrito en ambos idiomas). Si lo hace sin embargo ir con cljs asegúrese de obtener una buena biblioteca y no hagas cosas en vanilla cljs o te arrepentirás cuando quieras mantener 5k + LOC.(busque Fulcro, Reagent, om, OmNext, hoplon, etc.)

 3
Author: andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-20 20:50:00