title: What haskell topics need to be addressed in a Real-World-Haskell style?
body: <p>It has been quite some time now that RWH came out (<strong>almost 3 years</strong>). I was eager to get my copy after following the incremental writing of the book online (which is, I think, one of the best ways to write a book.) What a rewarding read in the midst of all the rather academic papers a haskell student usually encounters! </p>
  
  <p>It was a sturdy companion on quite some trips and I refer back to it regularly.
  Still, my copy started to look <em>pretty battered</em> and even though most of the content is still valid, there has been an abundance of new topics in the haskell world that would be worth covering in a similar fashion.</p>
  
  <p><img src="https://i.stack.imgur.com/Ymnqf.jpg" alt="my battered copy of rwh"></p>
  
  <p>Considering the impact RWH had (and still has,) I sincerely hope that there will be a sequel some day :)
  Some of the topics for a sequel that would immediately come to my mind:</p>
  
  <ul>
  <li><strong>Iteratees</strong></li>
  <li>more on <strong>concurrent programming</strong> in haskell</li>
  <li>merits and dangers of <strong>lazy evaluation</strong>
  
  <ul>
  <li>possibly covering some common libraries that deal with this</li>
  <li>in particular lazy io</li>
  </ul></li>
  <li>new <strong>ghc features</strong> (e.g. the new I/O Manager, LLVM code generator)</li>
  <li><strong>Memoization</strong></li>
  <li>..</li>
  </ul>
  
  <p>What are the topics that the haskell community needs a RWH-style explanation for?</p>
  
  <hr>
  
  <p><em>this is a summary of the suggestions so far:</em></p>
  
  <p><strong>Concepts</strong></p>
  
  <ul>
  <li>Iteratees / lazy IO</li>
  <li>Arrows</li>
  <li>ghc event manager</li>
  </ul>
  
  <p><strong>Techniques</strong></p>
  
  <ul>
  <li>generics (uniplate, syb)</li>
  <li>metaprogramming (Template Haskell)</li>
  <li>data structures (use of functional datastructures, designing data structures)</li>
  <li>EDSLs (designing EDSLs)</li>
  <li>memoization</li>
  <li>designing with monads</li>
  <li>best practices for imperative programming</li>
  </ul>
  
  <p><strong>Tools</strong></p>
  
  <ul>
  <li>ThreadScope</li>
  <li>Advanced FFI tools (c2hs, using Haskell from C)</li>
  <li>cabal</li>
  <li>haddock</li>
  <li>hoogle</li>
  <li>Tuning the runtime, esp. GC flags</li>
  <li>Djinn</li>
  </ul>
  
  <p><strong>Libraries</strong></p>
  
  <ul>
  <li>arrays and array programming (vector, repa, hmatrix)</li>
  <li>numerics (random numbers)</li>
  <li>parallel programming (The Par monad)</li>
  <li>unicode and locales (text, text-icu)</li>
  <li>parsing (attoparsec, tagsoup)</li>
  <li>networking (snap, yesod)</li>
  <li>web stuff (templating)</li>
  <li>persistance (especially no-sql storage bindings)</li>
  <li>graphics (cairo, sdl, opengl)</li>
  <li>xml (haxml)</li>
  <li>crypto</li>
  <li>processors and systems stuff</li>
  </ul>