On 14/06/10 06:42, Aran Donohue wrote:
Hi Cafe,

I've been doing Haskell for a few months, and I've written some mid-sized programs and many small ones. I've read lots of documentation and many papers, but I'm having difficulty making the jump into some of the advanced concepts I've read about.

How do people build intuitions for things like RankNTypes and arrows? (Is the answer "Get a PhD in type theory?") Normally I learn by coding up little exercise programs, but for these I don't have good intuitions about the kinds of toy problems I ought to try to solve that would lead me to understand these tools better.

For systems like Template Haskell and SYB, I have difficulty judging when I should use Haskell's simpler built-in semantic abstractions like functions and typeclasses and when I should look to these other mechanisms.

I'd second Ivan's suggestion to "learn-by-need". For SYB and Template Haskell, and probably for most other fancy abstractions, you can get on happily without them in most cases. When you start to think "there must be a better way!" while coding, that's when you should start looking for advanced features.

For example, if you find yourself writing the Nth boilerplate function that pattern-matches all cases in your ADT just to apply a function in its sub-types, that's when you'll want some form of generic programming like SYB. And by that point you'll understand one of the problems that generic programming solves, which is halfway towards understanding the techniques themselves.

Hope that helps,

Neil.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to