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.

But sometimes a feature looks really interesting and you really want to run into a problem to which the feature is the solution. If this is the case for you with RankNTypes, here is such a problem:

1) What's a type of this function? I say *a* type because there are multiple correct answers.

debugWith f = do
  putStrLn (f True)
  putStrLn (f 'c')

Don't ask the compiler to infer the type for you; it won't be able to. One of the characteristics of RankNTypes is that the compiler needs you, the programmer, to supply the type.

2) What would be a good argument to debugWith?

3) What's one reason the compiler can't infer the type for you?

Hope this helps!

Martijn.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to