title: Is there any significant difference between StateT over Reader and ReaderT over State?
body: <p>When I design my programming model I always have a dilemma which approach is better:</p>
  
  <pre><code>type MyMonad1 = StateT MyState (Reader Env)
  type MyMonad2 = ReaderT Env (State MyState)
  </code></pre>
  
  <p>What are the benefits and trade offs between using one monad over another? Does it matter at all? How about performance?</p>