

Review: Learn You a Haskell for Great Good - dons
http://www.jerf.org/iri/post/2910

======
oscilloscope
Near the end of the article, author suggests "free resources online" as an
alternative to LYAH and Real World Haskell. FYI, both are available online,
for free:

<http://learnyouahaskell.com/chapters>

<http://book.realworldhaskell.org/read/>

LYAH has some great jokes in it. It's easier to remember funny things, since
humor involves fracturing your worldview just a bit. This helped me ease my
way into Haskell and loosen my brain up. Less rambling than _why's poignant
guide or Programming Perl (the humor), and well-paced for beginners.

~~~
jerf
Just updated to add the first link. The online LYAH doesn't seem _quite_
identical to the version I have (different chapter titles if nothing else),
but it seems to be the same thing. (Wouldn't be surprised they come into total
sync over the next few weeks.)

The point about humor is what I tried (poorly, I think) to get across in the
line about offsetting the formality. You said it much better. It is more than
just a random style choice, it turns out to be a core aspect of the book's
approach, I think.

(Linking the competition feels faintly gauche to me, even if I do conclude
they are complimentary rather than competitive. YMMV.)

------
T_S_
To the programmer Haskell gives back a tool imperative programming took away
-- equational reasoning. That's lost when you write x = x + 1, and it's
something that got you through every math class and an essential tool to
construct humankind's most powerful abstractions (i.e. design patterns).

Did you ever consider solving an equation to write some code? Haskellers
sometimes do. Learn about fmap and foldr and then compare what you know to
map/reduce.

~~~
Homunculiheaded
What's funny is that I was talking to someone just learning to program the
other day, they were learning variables so I asked them if we have int x = 4;
and then x = x + 1; what is the final value of x? Their intuition was that
this does not make sense since x cannot possibly equal x + 1 in this case. I
suddenly realize that Haskell's picture of programming in this regard may in
fact be closer to the way people reason about problem before they learn to
program.

~~~
erez
One should hope Haskel, and other functional programming evangelist come with
a better element to display. The = operator is just syntax. Pascal uses :=,
you could use ## for all the compiler care (as in x ## x + 1), or I could
eschew all operators and have a x.assign(x.increment()), so no math student
gets confused.

There's great power in the idea of single assign, and the notion of immutable
objects (be it variables, or else) is getting many programmers to rethink
their ideas, but saying "this is right because it's like in math" is selling
the idea short, and not doing any justice to the strengths of functional
programming.

~~~
T_S_
It's not just a matter of syntax. It's what some people call the difference
between expression (which are mathematical) and statements (which are harder
to manage mathematically). Check out Hughes' well known paper or some
discussions about it. <[http://weblog.raganwald.com/2007/03/why-why-
functional-progr...](http://weblog.raganwald.com/2007/03/why-why-functional-
programming-matters.html>);

I simply point out this feature because most people focus on language features
and this is "programmer feature" that you might not think of if it wasn't
pointed it out.

~~~
silentbicycle
Or, put another way, statement-based languages vs. expression-based languages.
Strictly speaking, they can be equivalent, but each pushes code in different
directions by default. (And for the whole "= means mutate-variable" thing, I
think "<-" is a good operator.)

~~~
mahyarm
Squeak smalltalk has the <\- character. It's actually the '_' character but
displays as a one character width left arrow. You can also use :=

------
silentbicycle
I got a review copy today, too. I will post a real review once I get further
along, but briefly: I like how this book makes Haskell seem un-intimidating.

What jerf says matches my impressions, though I'm only 7 chapters in so far.
(blame Kona. :) ) I think his "why Haskell is interesting" post has much more
to it, though.

Also: Whoever binds No Starch's books does a great job! The lay-flat binding
is appreciated, especially for books read at a REPL. (Same with _Land of
Lisp_, for example.)

------
abraxasz
One year ago, when I first tried to learn Haskell, I looked at all the
tutorials I could find online, and I always found myself lost when monads
where being introduced...

... except with this tutorial (I read it online). It is the only one that
really made me understand the concept of monad. The book takes you from
functors to monads, explaining you how everything is pretty logical, and that
if there were not there, you would probably have invented them..

If you ever tried to learn Haskell but could wrap your head around monads,
this book is for you.

------
DannoHung
I'd like to also mention that bonus has a ridiculous sense of humor and his
Twitter feed is just... great weirdness. <http://twitter.com/#!/bonus500>

~~~
qF
I've only quickly browsed through the online version and already had a few
good laughs! And I love the;

    
    
       This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License because I couldn't find a license with an even longer name.

------
warmfuzzykitten
Just bought a copy from Amazon based on this review. I have to say, the title
had put me off. I don't buy X For Dummies books, either, and the title seems a
bit like For Dummies By Dummies. Glad to learn, once again, you can't tell a
book by its cover. Sounds like it might help me unlearn enough of the last 30
years of imperative programming to actually learn something new. Really
looking forward to it.

------
chrishenn
I got my hardcopy in the mail about a week ago. I have very little real world
programming experience --- I've only dabbled in Ruby and Python in the past
scripting small utilities.

I picked up LYAH because it looked interesting. Everyone says Haskell is such
a weird language and I can't comment on that, but it certainly seems much more
mathematical. I've been using it in parallell to my Algebra II class in school
to solidify knowledge in both topics.

I recommend it to anyone, read it online at least!
<http://learnyouahaskell.com>

------
Tyr42
I think the reason tail recursion was not talked about is that it is different
in Haskell, because of the laziness. You have to worry about unevaluated
thunks building up more than stack space.

------
apgwoz
I've been meaning to write down some thoughts about this book, but I haven't
had time to put the _direct_ knowledge gained from reading it to real use--
hopefully that'll change soon.

I too was glad that there was a lot of introduction before the "hard" topics
came into place. I do believe that the harder topics were explained rather
well--certainly better than some of the other introductions I've seen online.

I just got my hardcopy in the mail today. I hope to reread some parts and "Put
to use a Haskell for Great Good."

------
cincinnatus
Can someone explain what the deal is with the title? It sounds like a machine
translation. I read the intro and the English there is perfectly sound.

