One of the biggest barriers to the wide(r) scale adoption of functional programming languages like Haskell, F#, and Scala is how snooty and condescending your average FP developer is. And beginner-unfriendly.

Ask them a question about an intermediate topic (in my case, the Free monad) you're likely to get a whole torrent of category theoretic rubbish in return.

This is a common pattern I see when "experts" answer questions.

Now, it didn't bother me much because I've studied a fair amount of category theory and can usually follow such answers, but, for the sake of the general case, I'd like to shove these rules into the heads of everyone writing an answer to a question (not just FP):

1. If you can't illustrate a concept clearly without going into verbal diarrhoea with phrases like "monad homomorphism" and "just a monoid in the category of endofunctors" then you clearly haven't understood it properly (unless, of course, the answer absolutely requires it). An answer is not the place to show off your knowledge of a topic.

2. Please remember that everyone was a beginner at some point. Including you. Understand that some concepts can be extremely frustrating at first and yet incredibly simple after you grok them (eg. monads).

3. If the person asking the question is a beginner, using complex concepts in an answer just because it's a more "elegant" way to explain it doesn't really help them. They are more likely to get confused and drop the topic.

(Kudos to those people who give highly relevant, insightful, simple, and intuitive answers, you guys are the best).

  • 16
    That made me think of the quote “Functional programming combines the flexibility and power of abstract mathematics with the intuitive clarity of abstract mathematics”, from xkcd #1270.
  • 2
    Part of the problem imo is that the topics are super foreign, and with their roots in category theory is it any wonder?

    I really struggled with my entry to F# and functional ideas, and I still find most of it frustratingly baffling.

    I think because it lost out as far as industry was concerned (OO won back then), it’s been confined to academia and we all know what an ivory tower that can be.

    For anyone looking to get started:

    F# for fun and profit
    Learn you a Haskell (for great good)
    And Thomas Petriek’s blog / SO posts and answers.
Add Comment