[Haskell-cafe] learning advanced haskell
Neil Brown
nccb2 at kent.ac.uk
Mon Jun 14 05:53:52 EDT 2010
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.
More information about the Haskell-Cafe
mailing list