
"This book teaches functional programming using Haskell, the most popular purely functional language. The emphasis is on functional programming as a way of thinking and problem solving, using Haskell as a vehicle for expressing solutions. Rather than using conventional examples from mathematics, which are commonly found in other programming language books, this tutorial uses examples drawn from multimedia applications, including graphics, animation, and computer music, thus rewarding the reader with working programs for inherently more interesting applications. The author also teaches how to reason about functional programs, using a very simple process of calculation."--BOOK JACKET.
It just "naturally" plays around with the language using very simple concepts, and at the same time showing the simplicity and expressiveness of working with those concepts that would be hard in other languages.
It's a bit of an old book by now, so it covers an older subset of the language (and maybe some very few syntactic details might be different, but I don't think it should impede anything), but for starting out you don't want to go too "wide" anyway.
I could give an example. Once upon a time a stumbled upon this classic article (which I re-read sometimes to feel better):
https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
When I read this for the first time I have been literally shocked by sudden realization that I have coded some stuff in PHP but never knew it is such a crap.
It also taught me that I literally know nothing, that I am merely a stupid coder, not a programmer, so I undertook a serious study of CS fundamentals to be able to write an article like this in the future.
Now, after a few years of studying, I know a half-a-dozen of languages and I know crap when I see it. Ironically, what is going on with the Node ecosystem puts PHP3 into a shame. But it is natural, because most of JS coders have no CS background. People with CS background sometimes produce gems like Go or Erlang, while "mere coders" always produce things like PHP, J2EE and npm.
There is only one thing that I regret - it could save me so much time by not reading bullshit on the web if only I could find the right books (like Programming Erlang, Haskell School of Expression or On Lisp) and right courses (like Dan Grossman's and 6.001 2004 - the last course in Scheme) first. There is a huge, qualitative difference between a well-written gems like these and fucking crap some narcissistic idiots post in their blogs.
I have found the right books and the right courses by literally swimming thorough the sewers for years. A decent school will teach you the right principles, instead of irrelevant details, in ML or Scheme right from the beginning.
Paul Hudak's book "The Haskell School of Expression" is probably the most beautiful programming-related book I ever read. It not only got me into Haskell (significantly altering my programming path in life), it was also such a joy to read.