I wondered what functional languages are mainly used for? I've been reading about them and read about Haskell and others. Some seem to be just "academic" languages which makes little sense to me, so hoping to get a better idea of their uses in real world applications.
-
There are some good answers on stack overflow. Check this out. stackoverflow.com/questions/602444/… Ideally those should be moved here but we dont live in a perfect world.– Jit BCommented Jul 27, 2013 at 5:11
-
1I use aura, but I'm not sure that's a typical example.– beatgammitCommented Jul 27, 2013 at 5:31
-
2what is a functionnal language for you?– Simon BergotCommented Jul 27, 2013 at 8:45
-
1@DeerHunter is JavaScript a functional language? I've seen arguments that it isn't?– JonnnyCommented Jul 27, 2013 at 14:10
-
2@Johnny: True. There are, however, some main ideas that recur in most functional languages: referential transparency, functions as first-class values, closures, higher-order functions, immutable data, use of recursion instead of iterative computation + side-effects, algebraic data types, pattern matching, ...– GiorgioCommented Jul 27, 2013 at 15:36
1 Answer
Functional programming languages are really suitable for Big Data because if you think about it, most of Big Data is about data processing, filtering, aggregating (a.k.a Data Flow).
Functional programming idioms such "Higher Order Functions", functions composition, partial functions, map/reduce, filtering, sequences abstraction (in Clojure) are a natural match to Big Data field.
- Functional programming languages make it easy to write "Domain Specific Language".
- Functional programming languages greatly simplify coding and architecting multithreaded and parallel systems (Erlang Actors, Elixir, Scala/Akka, Clojure/Pulsar).
- Functional programming languages are suitable to code "Natural Language Processing", "Information Retrieval" and "Machine learning" systems. This is also due the "Higher Order Functions".
The ability to create and return functions dynamically at runtime is the main reason why Lisp is used to create AI and machine learning systems.
Dean Wampler gave an interesting talk at the Lambda Jam conference on why Copious Data is the Killer App for Functional Programming.
One field that I don't think functional programming fits in is building GUIs. This is where OOP shines. Just take a look at Cocoa and Cocoa Touch; both are well crafted frameworks.
Personally I like creating web applications with a functional programming languages. My favorite stack right now is Clojure/Pedestal/ClojureScript.
-
6FRP is a wonderful way to build GUI's. Personally I enjoy it more than any OOP framework I've used so far Commented Jul 27, 2013 at 13:42
-
@chiron Thanks, as soon as I get enough reputation I will upvote/accept this answer and also upvote some other comments as they were helpful to me. I've yet to really delve into the area in much detail but it does seem interesting - Thanks– JonnnyCommented Jul 27, 2013 at 14:19
-
2@jozefg: What language + framework are you using for FRP? I find this topic very interesting.– GiorgioCommented Jul 27, 2013 at 15:37
-
3@Giorgio I use Reactive Banana which is in Haskell. I've heard good things about Racket's FRP DSL language as well. I don't like JS so I haven't touched any of those libraries Commented Jul 27, 2013 at 15:40
-
Great anwser except "Just take a look at Cocoa and Cocoa Touch" - I would take a look at WPF and Reactive Extensions instead: proper declarative + functional-reactive GUI. I am afraid Cocoa comes from previous age.– DenCommented Aug 8, 2013 at 9:30