Hi Cafe,<div><br></div><div>I&#39;ve been doing Haskell for a few months, and I&#39;ve written some mid-sized programs and many small ones. I&#39;ve read lots of documentation and many papers, but I&#39;m having difficulty making the jump into some of the advanced concepts I&#39;ve read about.</div>
<div><br></div><div>How do people build intuitions for things like RankNTypes and arrows? (Is the answer &quot;Get a PhD in type theory?&quot;) Normally I learn by coding up little exercise programs, but for these I don&#39;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. </div>
<div><br></div><div>For systems like Template Haskell and SYB, I have difficulty judging when I should use Haskell&#39;s simpler built-in semantic abstractions like functions and typeclasses and when I should look to these other mechanisms.</div>
<div><br></div><div>I understand the motivation for other concepts like iteratees, zippers and functional reactive programming, but there seem to be few entry-level resources. John Lato&#39;s recent Iteratee article is a notable exception*. </div>
<div><br></div><div>Hints? Tips? &quot;Here&#39;s how I did it&quot;? _______ is a great program to write to get to learn ______?</div><div><br></div><div>Thanks in advance,</div><div>Aran</div><div><br></div><div>* Even in this article, he busted out <font class="Apple-style-span" face="&#39;courier new&#39;, monospace">(&gt;=&gt;).</font><font class="Apple-style-span" face="arial, helvetica, sans-serif"> And it appears that the iteratee library&#39;s actual design is more sophisticated than the design presented.</font></div>