Follow-up to “Functional Programming Doesn’t Work”

Programming in the 21st Century - James Hague - December 30, 2009

Not surprisingly, Functional Programming Doesn’t Work (and what to do about it) started some lively discussion. There were two interesting “you’re crazy” camps:




The first mistakenly thought that I was proposing fixing problems via a judicious use of randomly updated global variables, so every program turns into potential fodder for the “Daily WTF.”




The second, and really, the folks in this camp need to put some effort into being less predictable, was that I’m completely misunderstanding the nature of functional programming, and if I did understand it then I’d realize the true importance of keeping things pure.




My real position is this: 100% pure functional programing doesn’t work. Even 98% pure functional programming doesn’t work. But if the slider between functional purity and 1980s BASIC-style imperative messiness is kicked down a few notches—say to 85%—then it really does work. You get all the advantages of functional programming, but without the extreme mental effort and unmaintainability that increases as you get closer and closer to perfectly pure.




That 100% purity doesn’t work should only be news to a couple of isolated idealists. Of the millions of non-trivial programs ever written—every application, every game, every embedded system—there are, what, maybe six that are written in a purely functional style? Don’t push me or I’ll disallow compilers for functional languages from that list, and then it’s all hopeless.




“Functional Programming Doesn’t Work” was intended to be optimistic. It does work, but you have to ease up on hardliner positions in order to get the benefits.



Categories: Blogs  Programming in the 21st Century  

Comments

anonymous avatar

So what else is new ? The reason we have so many impure functional langs, is that pure functional is hard. What is the sensation? Meet Lisp,Scheme, OCaml, Clojure, etc (maybe even Python to some extent).
I think that by definition of “pure” - it is very hard to get 100% of it, and it is much more easy to get, say 98% than 100% purity in nature. Only God is pure. The rest of us will always have to compromise.

Posted by Gabi on 31 Dec 2009 at 09:16



 
anonymous avatar

Perhaps you should have titled it “Pure functional programming isn’t practical”.  From what I’ve read, most “pure” implementations of the lambda calculus eventually backed down from it or added “impurities” to it to make it practical.  You have to do I/O to do anything interesting.

Posted by Sean Cribbs on 01 Jan 2010 at 17:34



 
anonymous avatar

I have no idea what you guys are talking about

Posted by Malaysia Insider on 11 Jan 2010 at 17:49



 
anonymous avatar

Are you guys human?

Malaysia Insider

Posted by Malaysia Insider on 11 Jan 2010 at 17:52



 
anonymous avatar

admire the valuable information you offer in your articles. I will bookmark your blog and have my children check up here often. I am quite sure they will learn lots of new stuff here than anybody else!
drink coasters

Posted by Adley Fair on 20 Feb 2010 at 11:40



 
anonymous avatar

I actually still need advice, myself!  I’m not qualified to answer that one, except to say - just film it! just keep doing it so that you develop the skills.
PHP Programmer Montreal

Posted by Adley Fair on 20 Feb 2010 at 12:43



 
anonymous avatar

Its a nice post regarding law and its values.I think its necessary to each and individual to follow the law and order.
Jumping Castle

Posted by Abbott on 21 Feb 2010 at 19:20



 


Add comment

Name:

Email:

URL:

Smileys

Remember my personal information

Notify me of follow-up comments?