clojure f# functional-programming

Diferencias significativas entre F#y Clojure



functional-programming (7)

¿Cuáles son las diferencias más significativas entre F # y Clojure?

¿Qué construcciones tiene F # que Clojure no tiene y viceversa?

¿F # tiene macros?


Ambos son primeros lenguajes de programación funcionales , pero sus sistemas de tipo son muy diferentes. F # es un lenguaje fuertemente tipado y Clojure es un lenguaje tipado dinámicamente y por lo tanto

  1. La respuesta de Boumbles a ¿Cuál es la diferencia entre la tipificación fuerte frente a la estática y la tipificación débil frente a la dinámica ?
  2. la respuesta de Haylem a estudios de idiomas dinámicamente versus tipados estáticamente ; o
  3. La pregunta de Joey Adams ¿ Qué es mejor para la creación de prototipos: un lenguaje de tipo estático o uno de tipo dinámico?

puede ayudar a responder "¿cuáles son las diferencias más significativas entre F # y Clojure?". Sin embargo, tenga en cuenta que el debate entre "tipado estático" y "tipado dinámico" es de larga ejecución y, por lo tanto, puede parecer religioso.


Clojure es un lisp, lenguaje de familia real lisp-1. F # es prácticamente adoptado por OCaml a la plataforma .net.


F # realmente corresponde a Scala en JVM. Lo más parecido a Clojure en la plataforma .NET es IronScheme.


La mayoría de las diferencias surgirán del hecho de que F # desciende de ML mientras que clojure desciende de lisp .

Entonces F # tiene más sensación de ML / OCaml / Haskell con énfasis en:

  • tipeo estático
  • escriba inferencia
  • la coincidencia de patrones

Mientras que Clojure tiene más de una sensación Lisp con énfasis en:

  • s-expresiones
  • macros
  • cierres

También, como señaló Brian, F # es un lenguaje .Net, mientras que clojure es un lenguaje JVM, por lo que cada uno tendrá acceso a un amplio pero diferente conjunto de bibliotecas.



Si quieres macros, puedes usarlo con Boo o Nemerle .


Una diferencia clave es que F # es un lenguaje .NET, mientras que Clojure se ejecuta en una JVM. Por lo tanto, las implementaciones y las plataformas compatibles serán diferentes.

Tenga en cuenta que F # es compatible con mono, sin embargo.

En cuanto a las macros, creo que no tienes suerte .