Haskell Good Reads: From Zero to Hero

I am about to curate a reading list to establish a clear path for people to build strong fundamentals in Haskell, leaning toward practical Haskell, i.e. usable for work and hobby projects alike, and I am curious as to what others might recommend. To be sure, I want the list to be as concise as possible, to pave the road toward the goal just mentioned. Also the list I have in mind may contain any sort of written material, from books to wikis, free or commercial products.

The spirit of this topic is to discuss and evaluate different text-only publications (books, articles, ebooks) for the saking of building strong fundamentals in Haskell while making for pleasant reading sessions, aka a Good Reads list. Please do not plug your own materials, or if you do, please argue why they should belong to this Good Reads list.

So my list would be something like this:

  1. Learn You A Haskell series: http://learnyouahaskell.com/, along with the Haskell Wiki book: https://en.wikibooks.org/wiki/Haskell
  2. Get Programming with Haskell (book from W. Kurt) or alternatively Haskell Programming from First Principles (book from C. Allen & J. Moronuki)
  3. Real World Haskell: http://book.realworldhaskell.org/
  4. Parallel And Concurrent Programming in Haskell (book from S. Marlow)
  5. Thinking With Types (book from S. Maguire)

Feel free to share your own or comment mine.

Have a beautiful day

9 Likes

That’s a cool study plan. Thing is we might have different things in mind. I have in mind a list of things to read in an order such that reading them (and practicing along the way) is more or less sufficient to achieve the skills mentioned in my original post. And I am more interested for now in things published or presented for convenient reading sessions, like when commuting or at home with a steaming cup of coffee or tea. Whereas I see in your study plan more like a tutorial threading through different topics, something perhaps more appropriate as teaching material?

But perhaps we could join forces and find the ideal list in my sense? :slight_smile:

3 Likes

I don’t think I even need to disagree with you at all! I happen to have “a pleasant, reading session experience” quite high on my list of desiderata, while you probably wouldn’t rank it so high. Perhaps someone would learn a bit faster walking down your road, than they would walking down mine. No issue at all – our two roads merge in turn eventually.

All the best!

3 Likes

You might be also be interested in https://atypeofprogramming.com then.
I haven’t read it myself, but I’ve heard very good things about it!

2 Likes

fwiw, I’m a Haskell beginner (not an FP beginner) who likes the “pleasant reading experience” idea. (I’m enjoying Learn You … and Bird’s Thinking Functionally with Haskell, for different reasons, even though you could argue that Bird’s book is not “leaning toward practical Haskell” compared to other books.)

@gilmi’s plan looks very useful, but it seems like it’s for someone with a goal of systematically acquiring a comprehensive foundation as quickly as possible, and that’s not me. I guess @Nycticorax’s list may have similar goals, but since it’s a list of books, it’s easier to just sit down and read.

I think guides like these–both gilmi’s and Nycticorax’s–are very helpful, but for some learners, they will be helpful as guides for what things to evaluate on one’s own as possible learning resources. I kind of know what works for me, so I would never automatically follow someone else’s guide, but I do like suggestions about where to look.

2 Likes

Thank you @gilmi @mars0i and @Nycticorax super useful posts on learning paths from different perspectives!

2 Likes

Indeed. Learning works better when it’s fun, and some folks like me have more fun when they can balance school-like studies with laid back reading. It’s very possible to sometimes be struck by how different and deep certain old ideas are materialized in Haskell, and this kind of intellectual pleasure might be easier to experience with “real” publications.

So yes I definitely feel like there is room for both, complementary resources.

I shall continue by quest for The Reasonably Short Bookish Haskell Learning Path That Still Aims at Practical Proficiency.

2 Likes

I really like @gilmi’s plan on learning Haskell :+1: And I want to mention Learn4Haskell separately.

We’ve created this course in Kowainik to help people get started with Haskell quickly and learn the language basics. The course contains descriptions of various concepts and tasks that you can solve along the way. So you don’t need to read anything external, you can open code in your editor and learn Haskell.

The killer feature of Learn4Haskell is that we provide a review of your solutions with feedback and suggestions.

3 Likes

I’m confused. In my opinion, @ChShersh did contribute very on-topic suggestions for a study plan. Can you outline what’s been offending you in his post (and apparently, some previous posts in this thread as well)?

2 Likes

I’ll help you: I am trying to collect feedback on a list of written publications (the Good Reads) meant to provide a pleasant and useful experience as a part of reading sessions. It it clear from my list, and from the comments and replies under it, that online git-based courses fall outside of this scope. @gilmi had the politeness of questioning some of the assumptions behind my intent, and that is fine – we can discuss my assumptions. But injecting one’s elevator pitch in the middle of it is uncalled for at best.

To be fair it is not clear from your original post that what you are looking for is “a pleasant reading experience”. You mention wanting the list to lean towards practical Haskell, be concise as possible and may contain any sort of written material. Learn4Haskell is absolutely all of those things.

You might want to further clarify your intentions in the original posts in order to get more responses relevant to your interests. Can be done without passive aggressive responses as well.

3 Likes

If you will allow me a shameless self promotion, I’ll throw my Monad Challenges (https://mightybyte.github.io/monad-challenges/) out there for consideration. I have two reasons for doing so. First, I don’t think there’s any substitute for hands-on fighting with the language while you’re trying to accomplish things. A lot of the materials I see (especially in the area of monad tutorials) focus more on explaining the concepts and less on providing a path for the student to develop their own intuition. And I think the monad challenges are notably different in that regard. Second, I would really like to get more suggestions from the community on how to improve / expand it.

2 Likes

You should be able to @Nycticorax. I am sure @ChShersh et al. had no ill intentions — indeed why not assume good faith? It is how we try to get along here.
Now that you made your objective clearer I am certain people will interact within your goal.

If you still cannot edit your post or want this thread split, PM me.

Thanks to the kind intervention of a moderator, I’ve made that clearer wherever I was able to.

@Nycticorax I’m sorry for derailing the conversation in a wrong direction. I must have misinterpreted some of your goals and wishes for a reading list, as I haven’t read the whole discussion, and thought that Learn4Haskell might be a good resource for learning Haskell from zero in the context of this topic. I apologise for my message.

2 Likes

It is fine, my original message wasn’t clear enough. I am sorry I overreacted – I’ve seen many similar situations in the past and I might have grown an excessive sensibility in that regard. Your work is enticing and I hope it will help many newcomers.

1 Like

I’ll go ahead and plug my own book, Production Haskell. It’s not quite done yet and still has hundreds of pages of great practical information. It’s less about “how to learn Haskell” and more “how to use Haskell.”

My blog is also primarily focused on practical Haskell developmen.

2 Likes

Can you rephrase your post in a way that meets the wish expressed in the (recently updated after requesting moderation) original post?

I get that people who post here want to help, and having written a book gives you a ton of legitimacy to express your views on the topic. But I’d like to avoid a plug-fest of people pitching what they’ve done – I am trying hard to make this topic about discussing combinations of written resources which together make for a healthy learning path. Can we please dodge the individual stuff and think about the future learners here? Can we agree on useful combinations of written material instead of plugging one’s own material and saying it’s good?

If you agree to this goal, you need to forgo you writer-self, and give your reader-self the entire stage.

I feel like you aren’t going to discover many ready-made lists of Haskell content that haven’t been seen before. If people post individual pieces of content in this thread, surely those can be evaluated and combined into a list?

Furthermore I’m not clear about the goal here. Are you asking for something like a syllabus, where readers start at zero and read until the end? Or are you asking for a collection of works in roughly increasing difficulty order that are all individually good? If you’re looking for the former then I suspect throwing more than 2,000 pages of reading at someone will make them run away. But if you’re looking for the latter, why isn’t self promotion of relevant resources on topic?

To hopefully provide an on topic suggestion, there is a detailed wiki page available with many good resources listed on it: https://wiki.haskell.org/Learning_Haskell

And of course to plug my own thing, I think Haskell Weekly is a good way to test the waters of Haskell without needing to buy in too much. Subscribe, scan the headlines each week, and see if anything interesting pops up. I try to feature content that focuses on the more practical, “workaday” side of things rather than type astronautics. Hopefully beginners will appreciate that.

Or are you asking for a collection of works in roughly increasing difficulty order that are all individually good?

Yes.

if you’re looking for the latter, why isn’t self promotion of relevant resources on topic?

Self-promotion is OK, but only insofar as the person self-promoting uses the self-promoted thing as a means to engage with the question:

If, of all the things we’ve read, you had to pick a minimal set of written publications (“static contents” like books, articles, blogs, not git-based tutorials) meant to teach practical Haskell from beginner to advanced / expert, what would this minimal set be, and in what order should the works be read?

1 Like