Re: [Haskell-cafe] learning advanced haskell

From: Martijn van Steenbergen
On 6/14/10 10:39, Ivan Lazar Miljenovic wrote:
By being told that using them would solve some problem you're complaining about on #haskell or the mailing lists, you look at examples, read up on them, etc.
Short version: don't worry about advanced concepts until you have to. If all else fails, it doesn't hurt to write out the low-level version yourself and then get told in a code review that it would be "easier" or more elegant with an advanced technique.
Exactly this. It's happened a few times now that I ran into a problem and then a bit later found out that feature XYZ was exactly what I needed. A feature I never understood but now suddenly had a good intuition for because it is a (or the) solution to a problem I had been thinking about for a while.
I sort of agree with this, with some very large caveats. I would agree that being faced with an actual problem provides a particularly good learning environment for several reasons. For the "pragmatic programmer", this is probably the way to go. However, there's a lot to be said for both intellectual curiosity and learning for the sake of knowledge. Nearly all of us specialize in certain problem domains or areas and will likely never work on certain problems (related to e.g. compilers, web servers, etc.) in anything like a commercial environment. Some of us may never work in a commercial code environment at all. Just because you may never need to use a feature doesn't mean you shouldn't be able to understand it. John

John Lato wrote:
I sort of agree with this, with some very large caveats.
Well, yes. If you don't know what a feature does, then you won't know that it solves the problem you have.
However, there's a lot to be said for both intellectual curiosity and learning for the sake of knowledge. Just because you may never need to use a feature doesn't mean you shouldn't be able to understand it.
There is that. However, in my experience, most of the advanced techniques tend to be described in language beyond my comprehension. (And most examples seem overly complex - although maybe that's just a reflection of the fact that simple problems don't require sophisticated techniques in the first place.) Having a specific problem to solve can be quite helpful. Unlike an example, you already understand what the problem is, and why it can't easily be solved any other way.

Thanks for the great responses. My haskell-learning todo list is refreshed
and renewed :)
I would point out, though, that had I followed a "Learn when needed"
philosophy more broadly I would never have come to Haskell or even
functional programming in general.
Aran
On Mon, Jun 14, 2010 at 12:33 PM, Andrew Coppin wrote: John Lato wrote: I sort of agree with this, with some very large caveats. Well, yes. If you don't know what a feature does, then you won't know that
it solves the problem you have. However, there's a lot to be said for both intellectual curiosity and learning for the sake of knowledge. Just because you may never need to use a feature doesn't mean you shouldn't be able to understand it. There is that. However, in my experience, most of the advanced techniques
tend to be described in language beyond my comprehension. (And most examples
seem overly complex - although maybe that's just a reflection of the fact
that simple problems don't require sophisticated techniques in the first
place.) Having a specific problem to solve can be quite helpful. Unlike an
example, you already understand what the problem is, and why it can't easily
be solved any other way. _______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (3)
-
Andrew Coppin
-
Aran Donohue
-
John Lato