Hacker News new | past | comments | ask | show | jobs | submit login
Review: Learn You a Haskell for Great Good (jerf.org)
115 points by dons on April 22, 2011 | hide | past | favorite | 18 comments



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.


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.)


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.


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.


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.


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...;

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.


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.)


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


For those who've not seen equational reasoning used to write programs (or do simple proofs on them), here's an example from SO this week:

* http://stackoverflow.com/questions/5710078/in-haskell-perfor...

Algebra of Programming FTW!

See Richard Bird (or others at Oxford) for more on this style. E.g. http://lambda-the-ultimate.org/node/1117


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.)


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.


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


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.


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.


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


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.


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."


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: