This is a tremendous resource, but may I suggest you rather point here: <a href="https://www.fpcomplete.com/school/haskell-fast-hard" rel="nofollow">https://www.fpcomplete.com/school/haskell-fast-hard</a>.<p>It's the same course/series, but with interactivity, so Haskell can coded/evaluated from the browser. In fact, one "dir" up, you will find a bunch of similar tutorials here : <a href="https://www.fpcomplete.com/school" rel="nofollow">https://www.fpcomplete.com/school</a>.
I tried dipping my hands into Haskell over the summer. I fell in love with two resources:<p>1. Yann Esposito's Haskell Fast and Hard (on FPcomplete -- <a href="https://www.fpcomplete.com/user/yogsototh/haskell-fast-hard" rel="nofollow">https://www.fpcomplete.com/user/yogsototh/haskell-fast-hard</a>)<p>2. Learn you a Haskell by Miran Lipovaca <a href="http://learnyouahaskell.com/" rel="nofollow">http://learnyouahaskell.com/</a><p>The latter author decided to write the book based on his experience in learning Haskell. It's definitely one of the simplest and clearest programming books I've read.
Ok so here's the problem I'm having with trying to get into Haskell, and it's a problem Carmack identified: there's way too many "toy examples" out there.<p>I've always learned languages because I need them for something. C/C++ because I wanted to write a game. Python because it's the complex scripting language of choice in Ubuntu. JavaScript for obvious reasons.<p>What I really <i>really</i> need is something which walks me through doing something significant with Haskell - like, a GUI app on Linux or something (my current focus: I've never really done it, but if I'm learning something new I'd like there to be a practical product at the end).<p>A bunch of language constructs, while technically interesting, don't help me to grok the language at all.
How much interest would there be in a 0 to full Haskell development environment set of ansible scripts (and or Vagrantfile)? I'm working on a start up using Haskell at the moment and I've been capturing all of my set up in this way. If folks are interested I can make some of this stuff available.
<i>"Instead of being in your way like in C, C++ or Java, the type system is here to help you."</i><p>I'd still say the type system is there to help you in C, C++, and Java, it just doesn't do nearly as good a job of it, and winds up in your way more often because it's less expressive.
Learning a functional language is a great idea <i>especially</i> if you never intend to use one after you've learned it. It's like speaking a second language. Has a great effect on the understanding of your own language.<p>At university the first thing everyone had to (in programming) do was a Haskell course. Felt weird at the time, but in hindsight it was fantastic. It meant everyone had to throw their preconceptions about programming out the window.<p>It didn't occur to me until recently (10-15 years later), that functional concepts are actually a <i>good thing</i> to apply in any language; that it makes code parallelizable, modular, maintainable, testable, and so on. I just thought functional was functional (i.e. elegant but hard) whereas imperative was imperative (inelegant but easy). Much like the difference between algebra and arithmetic.<p>So go learn a second language, or even a third. Even if you intend to speak english and Java for the rest of your life. I'd choose Haskell and Spanish.
Pretty awesome, I've steered clear of Haskell preferring Scala instead (easier syntax for me to grok), but this tutorial makes Haskell far more accessible.<p>Off topic but does anyone know of a Rails/Play + Linq to SQL/ScalaQuery equivalent in Haskell?<p>Beyond that just being able to generate PDF invoices, send out emails and have access to a decent date/time library (like JodaTime) would cover the essentials for web development.
ASIDE: I've been using <i>learn you a haskell for great good!</i> <a href="http://learnyouahaskell.com/" rel="nofollow">http://learnyouahaskell.com/</a>, and found it helpful, insightful and the examples nicely paced so you can treat them as exercises as you go.... up until the module chapter, which is more like a reference, very long, detailed, tedious. I got up to here
<a href="http://learnyouahaskell.com/modules#data-char" rel="nofollow">http://learnyouahaskell.com/modules#data-char</a> (check out how small the scroll bar slider is on the right - this is a big chapter).<p>Did this stop you or how did get past it?<p>How does <i>Learn Haskell Fast and Hard</i> compare?
If you want to learn Haskell slow and easy, this is brilliant: <a href="http://learnyouahaskell.com/chapters" rel="nofollow">http://learnyouahaskell.com/chapters</a>
PERFECT. Relaxed but intense. Perfect! ... for me. This is exactly the kind of tutorial that works best for me. (I'm sure many people will find it unusuable. But that's OK - we have as many ways to learn as we have learners.)<p>The selection of artwork is pretty nice too.<p>Very very good. Thank you author and poster.
NB: if you're trying out haskell and you're on a mac with xcode 5, you'll be hitting some weird CPP related errors due to GHC 7.6 and older not playing nice with Clang's CPP.<p>I shared a number of work arounds with the general haskell community a few weeks ago here: <a href="http://www.haskell.org/pipermail/haskell-cafe/2013-September/110320.html" rel="nofollow">http://www.haskell.org/pipermail/haskell-cafe/2013-September...</a>
(there are alternative work arounds, but I only listed the ones which are simple and easy to communicate with other people and be able to expect them to follow the steps correctly.)
I have been wanting to look into Haskell for a long time now. Never really got the time. Also the syntax was a bit off putting.<p>Just skimmed through. I see that there is a bit of Javascript and C in the code too as reference matertial. Most people dont like such a way of teaching but it looks like the tutorial isnt really trying to teach Haskell in terms of Javascript or C. Really makes me want to look into this. Thanks for putting the efforts.
Minor nitpick: Using pattern matching instead of `if xs == []` is not just to make code prettier and cleaner.<p>First of all, you should be using the `null` function instead of `== xs` because the `==` operator only works if your list contents are Eq-able.<p>But the most important thing is that pattern matching is more type safe. If you use `head` and `tail` you, as a programmer, need to make sure that you only call them on a non-empty lists or else you get an error. On the other hand, if you use pattern matching the compiler helps you make sure that you always covered all the possible cases (empty vs non-empty) and you never need to worry about calling the unsafe head and tail functions.
I really like the art images in the tutorial. Nice touch.<p>Although I am not sure about the premise - I doubt Haskell, as a language close to mathematics, can be learned fast. This tutorial seems quite shallow on some things, like monads.
I'd like one of these beginner tutorials to have a chapter named, "learning cabal and using a library". That was a pain point for me (especially developing on windows). Well, not so much a pain point as a mortal wound.
Thinking about Haskell, reminds me of this <a href="http://www.xent.com/pipermail/fork/Week-of-Mon-20070219/044101.html" rel="nofollow">http://www.xent.com/pipermail/fork/Week-of-Mon-20070219/0441...</a>
Nice tutorial, but old story: <a href="https://news.ycombinator.com/item?id=3806841" rel="nofollow">https://news.ycombinator.com/item?id=3806841</a>
Okay so i completed this tutorial in about 5 hours , gave everything due , but still i only understand like 30 % of it and that too of the starting part.
Check out <a href="http://learnxinyminutes.com/" rel="nofollow">http://learnxinyminutes.com/</a>. Loads of languages/tools to learn.
I haven't seen this Haskell syntax before:<p><pre><code> [1,3..10] ⇔ [1,3,5,7,9]
</code></pre>
Imagine running into this one on a production system... Someone needs to make a 'Haskell: the good parts' or at least a lint.