I am trying to acquaint myself with different types of languages to understand the areas in which each one of them is extremely good at. So far, I have dabbled into C - a procedural language, C++ & java - static typed Object Oriented languages and groovy - a dynamic typed Object Oriented language.

Every programming language has probably been started to answer a need. And I presume every language is extremely good at at least one thing because of which it becomes a standard in a specific area or field. Like C, C++ have become standard in areas like browser or game development. Python in the Linux world for its easy scripting ability, Java in the enterprise world, etc.

Now I am interested to learn a functional programming language like Clojure or Lisp. So, where are functional programming languages used in real world scenarios? I don't think that one would use Clojure or Lisp for developing applications or UIs. So on what kind of projects should I indulge into after going through the basic tutorials and learning resources to get a brief understanding about the implementation of functional programming? And do you strongly recommend on One language in specific, like say clojure?

  • 5
    "And I presume every language is extremely good at at least one thing because of which it becomes a standard in a specific area or field" That's not generally true. It's a dangerous assumption to think that languages are somehow "specialized". A few languages have niches, but it's not true in general. – S.Lott Feb 6 '12 at 14:43
  • 6
    "I do not how and where to start." What prevents you from starting with the tutorials? Can you explain why the tutorials for these languages aren't helpful or useful? – S.Lott Feb 6 '12 at 14:45
  • "C++ & java" have very, very little to do with each other. – DeadMG Feb 6 '12 at 15:07
  • May i sak you what really intrigued you to learn Clojure or Lisp apart from the reason that they follow Functional Programming paradigm? – Maxood Feb 6 '12 at 15:07
  • 3
    When you say "real time" do you mean "real world" by any chance? That would seem to make a bit more sense in the context of this question. – sepp2k Feb 6 '12 at 15:08

You say real-world functional programming, I think Erlang.

Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging.


| improve this answer | |
  • 3
    +1 Korrecto! Also, I'd love to add, that for beginners in functional land, the "purest" functional language around would be Haskell :) – yati sagade Feb 6 '12 at 19:50

There is a great lecture series on Functional Programming by Stanford University.You can check them on YouTube.

I would advise you to look into Scheme rather than LISP. Scheme is a modified version of Lisp with further enhancements. Scheme is mostly used for academic and training pourposes. It is a great language if you like to do research in thoretical compueter science.


Google App Inventor for Android uses Scheme, where Kawa is used to compile the Scheme code down to byte-codes for the Java Virtual Machine running on Android devices. Elk Scheme is used by Synopsys as a scripting language for its technology CAD (TCAD) tools.

FYI: Usage of Scheme

| improve this answer | |

Bryan O'Sullivan, founder of mailrank.com (which was acquired by Facebook) built the entire server side of this software in Haskell. He presented on this at Strange Loop 2011, video and slides are available online.

The same guy wrote a book called Real World Haskell. Several people mentioned programming tutorials. This one may be quite appropriate to your interests (I like the Erlang suggestion as well).

| improve this answer | |

I know from friends in finance that the quantitative trading firm Jane Street uses OCaml to implement its trading strategies. They have a page where they talk about why, along with links to talks on the subject.

| improve this answer | |

Heres a list of Common Lisp success stories:




Although Common Lisp is only partly functional(it also supports OOP and procedural, as well as anything you wish to implement your self, or with a library), it's a very pragmatic language, and extremely powerful in the hands of a competent programmer. I actually use it to write web apps with the excellent RESTAS framework.

And the commercial python project that I'm working on right now will eventually be supplemented by services written in lisp(RESTAS as suggested by its name is excellent for RESTful services).

| improve this answer | |

I'd suggest diving into the compilers (for either general purpose languages or DSLs) - this is where functional programming is in its best. There will be many interesting and useful things to explore, from ADTs and pattern matching on one side of a spectrum to the Lisp macros on the other side.

| improve this answer | |

You may want to have a look at Hume.

From the The Hume Programming Language page:

Hume (Higher-order Unified Meta-Environment) is a strongly typed, mostly-functional language with an integrated tool set for developing, proving and assessing concurrent, safety-critical systems. Hume aims to extend the frontiers of language design for resource-limited systems, including real-time embedded and safety-critical systems, by introducing new levels of abstraction and provability.

From the wikipedia Hume page:

Hume is a functionally-based programming language developed at the University of St Andrews and Heriot-Watt University in Scotland, and named after the 18th Century philosopher David Hume. It targets real-time embedded systems, aiming to produce a design that is both highly abstract, yet which will still allow precise extraction of time and space execution costs, so allowing programs to be written that will execute under guaranteed bounded time and space constraints.

Hume is unusual in combining functional programming ideas with ideas from finite state automata. Automata are used to structure communicating programs into a series of "boxes", where each box maps inputs to outputs in a purely functional way using high-level pattern-matching. It is also unusual in being structured as a series of levels, each of which exposes different machine properties, which is highly unusual.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.