Skip navigation

Saturday, July 28, 2012 – 1:13 PM

I became interested in Functional programming 6 years ago. About 2 years before it started to hit mainstream and 4 years before it became the latest, possibly overhyped must know paradigm. I’ve reached a point where I have been able to identify what it is I enjoy and find so powerful about it. It has nothing to do with closures, currying, first order functions, pattern matching, algebraic datatypes or lack of mutability. No, instead it hast everything to do with state of mind. Now don’t get me wrong, all these features are great and are why one can enter the productive state of mind but I don’t think that they are the key to extracting the power of functional languages.

The key is that most functional languages strike a balance between practicality and declarativity that is probably closer to pareto optimal than any other paradigm. Logic programming is more declarative but has costs in terms of intuition and execution. Imperative programming and pure object oriented approaches can be overly verbose or cumbersome.

Functional programming allows you to hit the declarative spot often enough that it is powerful but also allows you to drop to step by step instructing when necessary (don’t fool yourself into thinking that just because you are functional doesn’t mean you will never do step by step instructing, even haskell has these moments). They also achieve a very good level of speed, optimize well mechanically and for the ones which allow an extra hatch into mutability – even more practicality when necessary.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: