 
        
        "The tools we use have a profound (and devious!)
        influence on our thinking habits, and, therefore, on
        our thinking abilities."
- Edsger Dijkstra
        
"The problem with object-oriented languages is the implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle."
- Joe Armstrong
      - Edsger Dijkstra
"The problem with object-oriented languages is the implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle."
- Joe Armstrong
          "...any new class is itself an island; unusable
          by any existing code written by anyone, anywhere.
          So consider throwing the baby out with the bath
          water."
- Rich Hickey
        - Rich Hickey
          "Lisp has jokingly been called 'the most
          intelligent way to misuse a computer'. I think that
          description is a great compliment because it
          transmits the full flavor of liberation: it has
          assisted a number of our most gifted fellow humans
          in thinking previously impossible
          thoughts."
- Edsger Dijkstra
      - Edsger Dijkstra
Join the renaissance!
      There are dozens of functional programming
      languages, and they can be as different from each other
      as Ruby and Cobol; however as a family
      they tend to:
    
    
      Emphasise the application and composition of
      functions, over the imperative mutation of
      state. Consequently functional programs are
      shorter and easier to reason
      about.
      
Prefer pure values over mutable objects. Values never change, so programs using values are safer and easier to reason about.
      
Treat functions as first-class values, allowing them to be passed as arguments and returned from functions. Higher order functions such as these enable powerful new abstractions.
    
    Prefer pure values over mutable objects. Values never change, so programs using values are safer and easier to reason about.
Treat functions as first-class values, allowing them to be passed as arguments and returned from functions. Higher order functions such as these enable powerful new abstractions.
      Focus on the primacy of data, rather
      than hiding it behind unwieldly classes.
      
Manage side effects more cleanly meaning less state and fewer bugs.
      
Be thread safe by default, without having to resort to locks which fail to compose.
      
Be a proving ground for awesome features. Garbage Collection, Closures, Continuations, Monads, Expression orientation, Lexical Scope, and Software Transactional Memories all made it into functional languages years before they were mainstream. What are you still missing?
      
    
    Manage side effects more cleanly meaning less state and fewer bugs.
Be thread safe by default, without having to resort to locks which fail to compose.
Be a proving ground for awesome features. Garbage Collection, Closures, Continuations, Monads, Expression orientation, Lexical Scope, and Software Transactional Memories all made it into functional languages years before they were mainstream. What are you still missing?
       Functional programming is not only on the cutting edge of
       computer science research, but it's being adopted by a
       leaner generation of startups who are innovating faster
       than their competitors.
       
A new generation of functional languages like F#, Scala and Clojure, are giving developers the ability to run functional languages on the runtime environment of their choice (.Net, JVM or Javascript), whilst traditional functional languages like Haskell, Scheme, Erlang and O-Caml continue to develop the state of the art in type systems, language features, compilers, and fault tolerant systems.
     
  A new generation of functional languages like F#, Scala and Clojure, are giving developers the ability to run functional languages on the runtime environment of their choice (.Net, JVM or Javascript), whilst traditional functional languages like Haskell, Scheme, Erlang and O-Caml continue to develop the state of the art in type systems, language features, compilers, and fault tolerant systems.
