why tutorial starting rich hickey guides example open-source scala functional-programming clojure

open source - tutorial - ¿Qué grandes proyectos de lenguaje funcional están disponibles gratuitamente?



syntax clojure (11)

Citrix lanzó la pila de herramientas de la API de Xen como software de código abierto here el año pasado. IIRC, es decir, cientos de miles de líneas de código OCaml que fueron desarrolladas por 18 desarrolladores desde 2006 hasta 2010.

Según flyingfrogblog.blogspot.com/2008/08/haskells-virginity.html :

  • El cliente peer-to-peer de MLDonkey es 171kLOC de código OCaml.

  • Unison es 24kLOC de código OCaml.

  • FFTW es 14kLOC de código OCaml.

  • Hevea es 12kLOC de código OCaml.

  • Darcs es 25kLOC de código Haskell.

Me preocupa que la falta de proyectos públicos muy grandes que usan estos idiomas se deba al argumento común de que realmente son pobres para proyectos grandes, lo que sería una verdadera vergüenza ...

Por el contrario, encontramos que OCaml es mucho mejor para grandes proyectos que los lenguajes principales como Java o C #, donde la incapacidad de expresar aspectos productivos de alto nivel del código conduce a problemas extensos de cortar y pegar y de mantenimiento. De hecho, actualmente tengo el reto de volver a escribir un millón de líneas de C ++ en F# precisamente porque el mantenimiento se ha vuelto prohibitivamente costoso.

Para empezar, estoy virtualmente vendido en ''todo lo relacionado con el lenguaje funcional''. Se me ocurre que, durante años, he estado haciendo sobre todo programación de estilo funcional en Java. Pero estoy un poco perdido en cuanto a cómo iniciar una aplicación funcional grande. Me gustaría ver la estructura de origen y compilación de un proyecto grande (OSS o lo que sea) para poder ver la mejor manera de manejar la modularidad en este entorno.

El contexto de mi pregunta es que quiero comenzar un gran proyecto JVM y actualmente estoy pensando en elegir una mezcla Java / Groovy o una mezcla Scala / Groovy. No quiero ir con la mezcla Scala / Groovy a menos que vaya en la dirección funcional porque no me gusta Scala para la programación OO (un tema completamente diferente). Esto significa evitar cosas como los marcos DI, AspectJ, etc. (Sé que puedo emular / lograr / aprobar estas cosas con la programación funcional ... pero eso no es relevante aquí.) Me preocupa que la falta de público sea muy grande. Los proyectos que usan estos idiomas se deben al argumento común de que realmente son pobres para proyectos grandes, lo que sería una verdadera lástima ...

Entonces pregunto, ¿qué proyectos fp grandes (digamos 20K + líneas) sigues? Me encantaría saber de cualquiera que se ejecute en un idioma en la JVM. Especialmente si sientes que manejan la modularidad de una buena manera.


El sistema de control de versiones distribuido darcs es puro haskell, es decir, fp puro y perezoso. Por líneas de código, esto podría no parecer un proyecto grande, pero tenga en cuenta que la sintaxis de haskell es muy densa.


Está escrito en OCaml y, por lo tanto, no se ejecuta en la JVM, pero Frama-C es un proyecto de más de 200000 líneas que implementa un marco de análisis estático para C, con una arquitectura de complemento.

Frama-C utiliza la carga dinámica de código nativo cuando está disponible, pero los complementos también pueden cargarse dinámicamente como código de bytes o vincularse de forma estática si está dispuesto a volver a compilar todo.

Más información, incluido el código fuente, en http://frama-c.com/ . Teniendo en cuenta la naturaleza de su pregunta, también puede apreciar este artículo en ICFP 09


Estoy tratando de asimilar a Erlang estos días, de lo que Scala está influenciado. Me gusta estudiar el código fuente de los yaws , que es un servidor http de alto rendimiento, y Wings 3D , un modelador de subdivisión. Muy educativo, la mejor manera de aprender un nuevo idioma es leerlo.



Hay dos grandes esfuerzos de código abierto en Scala que conozco: Lift y ESME ( Apache Incubator ).

Aunque parece que el nuevo lenguaje relacionado con Google, Noop está escrito en Scala hasta ahora. Es probable que cambie cuando Noop se vuelva lo suficientemente estable como para compilarse.



Sé que grandes porciones de Emacs y básicamente todas de Maxima están escritas en Lisp. Estos no se ejecutan en la JVM, pero son los mejores ejemplos que se me ocurren para aplicaciones grandes, bien establecidas, ampliamente utilizadas y apreciadas, escritas en un lenguaje funcional.


Scala / Lift: Novell Vibe: http://vibe.novell.com/ Autor: twitter.com/djspiewak

Clojure: Clj / Sys - Red de aprendizaje automático Autor: twitter.com/bradfordcross

Marco de Minería Predictiva de Rlojure Runa para el Abandono de Carro Autor: Amit Rathore (Clojure en Acción)


Xmonad es un administrador de ventanas escrito en Haskell, tienen un tutorial muy detallado para escribir extensiones.


Emacs tiene muchos Lisp, pero está escrito en un estilo muy imperativo. GHC es un gran proyecto escrito en Haskell y, por supuesto, el compilador OCaml, etc., está escrito en OCaml.