To begin with, I'm virtually sold on the 'whole functional language thing'. It occurs to me that, for years, I've been doing mostly functional-style programming in Java. But I'm a bit loss as to how to start a large functional app. I'd like to see the source and build structure of a large project (OSS or whatever) so that I can see how modularity is best handled in such an environment.
The context of my question is that I want to start a large JVM project and I'm currently thinking of choosing a Java/Groovy mix or a Scala/Groovy mix. I don't want to go with the Scala/Groovy mix unless I'm going in the functional direction because I don't like Scala for OO programming (a completely different topic). This means avoiding stuff like DI frameworks, AspectJ, etc. (I know I can emulate/accomplish/approve on these things with functional programming... but that's not relevant here.) I'm worried that the lack of very large publicly visible projects using these languages is due to the common argument that they really are poor for large projects, which would be a real shame...
So I ask, what large fp projects (lets say 20K+ lines) do you follow? I'd be most happy to hear of any that run in a language on the JVM. Especially if you feel they handle modularity in a good way.
Some of the popular functional programming languages include: Lisp, Python, Erlang, Haskell, Clojure, etc.
Functional programming has historically been less popular than imperative programming, but many functional languages are seeing use today in industry and education, including Common Lisp, Scheme, Clojure, Wolfram Language, Racket, Erlang, Elixir, OCaml, Haskell, and F#.
Functional languages are not very popular for production code because they are not very popular for production code.
I'm trying to grok Erlang these days, which Scala is influenced by. I like to study the source code of yaws, which is a high-performance http server, and Wings 3D, a subdivision modeler. Very educational, the best way to learn a new language is to read it.
The darcs distributed version control system is pure haskell, i.e. pure and lazy fp. By lines of code this might not seem to be a large project, but keep in mind that haskell syntax is very dense.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With