title: How to avoid OOP deep class hierarchies when switching to Haskell?
body: <p>A game written in say C++ typically has a class hierarchy such as</p>
  
  <ul>
  <li>CEntity
  <ul>
  <li>CMoveable
  <ul>
  <li>CCar</li>
  <li>CTank</li>
  <li>CJetPack</li>
  </ul></li>
  <li>CHuman
  <ul>
  <li>CPedestrian</li>
  <li>CPlayer</li>
  <li>CAlien</li>
  </ul></li>
  <li>CRigid
  <ul>
  <li>CRock</li>
  <li>CGrenade</li>
  </ul></li>
  <li>CMissile</li>
  <li>CGun</li>
  <li>CMedkit</li>
  </ul></li>
  </ul>
  
  <p>Now I have read that some have <a href="http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/">argued</a> that a class hierarchy is a wrong architecture even when using C++. But at least it attempts code reuse. And is the obvious way for being able to shove everything into one managing container since everything trivially fits into a list of CEntity.</p>
  
  <p>But in any case, for someone trying to switch from C++ to Haskell for making games how does one change the architecture to fit within Haskell's functional paradigm?</p>