You advice here may be good; am not questioning that. However, question does come why can't there be a shorter explanation for people who already know programming. Most people are unable to explain it well, or at all, leading me towards a belief that they don't get it themselves as yet.
I'm not looking for a single sentence explanation or definition. I'm willing to read more, and the structure you suggest of showing precisely worded definitions along with positive and negative examples would be great! However, I would not want to start with reading how to install a compiler, how to add two numbers in Haskell, etc.
I have similar issues elsewhere when people start with hello worlds and getting started in introductions to projects and programming languages without spending enough time on what the thing is about.
> why can't there be a shorter explanation for people who already know programming.
Why can't you learn chinese very fast if you already know a handful of european languages ? The answer is the same : the underlying concepts are different.
Sadly, there is no easy shortcut to understand these concepts. The best that can be done (and it's hard enough already), is to make learning entertaining.
The line of reasoning you have is correct as such, however, I find the analogy to be less than perfect. I do not need to be taught how to setup my computer for Haskell compilation or how to add numbers in Haskell to understand what is a monad.