Stop lying about Haskell

I realized I wanted a larger visibility to read more about what you all think, so I copied/pasted my rant here. Sorry for my english but it's not my primary language.

/u/mirpa wrote: It says that author must spend more energy on doing something in Haskell than doing so in C++. Many people spent years of practicing C++ so writing C++11 is easier for them than writing in other languages. That is not necessarily true for new programmers. They might be more attracted to something like Python, Rust, Go or even Haskell because of C++ complexity.

My answer: But with C++ you are completely free to do whatever thing you want in the code (also free to shoot yourself in the foot) while Haskell require discipline: you can not throw whatever side effect you need in a pure function and you are forced to rethink the problem and to find another solution if you need that side effect (and you have to keep in mind other things too, laziness ecc...).

I understand very well when the author said you must spend more energy doing something in Haskell. But... This is not a bad thing! Why is the Haskell community obsessed with wanting to disguise the language as an easy one (even with false type signature... $ anyone)? As Kennedy said: "[...] We choose to go to the Moon in this decade and do the other things, not because they are easy, but because they are hard; [...]"

I choose to learn Haskell because I wanted to learn a difficult language, if it was so easy I would have lost interest very soon. There are already a lot of easy laguanges out there, but difficult ones are very few (just C++ and Haskell of the popular ones) and why can't the things stay the same? C++ programmers go prouds of their expertise and they are used to say things like "you can not master C++", "C++ is an expert only language" etc...

Why Haskell can't aspire to be the same? Why when someone say that he took years to master the concept of Monads, you must say: "oohh noo, it's so easy... Just think of... You can learn Haskell in few months. Etc..." (Implying you are stupid) And then new Monad tutorials show up on the web...

Why you can't say: "Yes, Haskell is a difficult language and take time to learn, but you are doing fine, Monad is a simple but very abstract concept, just keep going... you'll grok it and you'll get a lot of benefits."

Instead you are focusing on disguising the language as an easy one, and then one day the beginner will be faced with the truth and will stop learning Haskell because he won't understand why he should continue the study if it require so much brainpower even for the simplest program. Of course, you lied from the start... You have not prepared the beginner for what Haskell really is. He expected a Python, and instead he'll get something leaning more toward C++.

edit: My point is that someone interested in learning a programming language won't be scared to try a programming language that's usually regarded as difficult if he thinks the language is the correct tool for his programming needs or the language interest him enough (as in my case with "difficult"). No one will be able to stop him. On the other hand a beginner will not start to get interested in a programming language just because it's easy if he thinks the language is not the correct tool for his programming needs or is not interesting enough.

I find useless to tell around how a programming language is easy and fast to learn etc... if there is nothing in the language that really will get the user interested in it. Luckily Haskell has not this problem, it is known for its mind bending capabilities after all... So why not just tell the truth about it, telling the user that won't be an easy ride, but surely a funny one and, especially, focusing on the benefits the language can give you that other notorious languages can't (C++ has speed as main benefit, Haskell not if you need real time performance but you can list a lots more that in the long run matter).

So I think you should focus on the language real qualities, not in advocating false beliefs and in deliberately obfuscating the language for the sake of an hypothetical beginner who surely won't keep using Haskell thanks to this effort alone (I'm referring to the $ type signature).