title: scala, guidelines on return type - when prefer seq, iterable, traversable
body: <p>When do you choose to type a given function's return type as <code>Seq</code> vs <code>Iterable</code> vs <code>Traversable</code> (or alternatively even deeper within <code>Seq</code>'s hierarchy)?</p>
  
  <p>How do you make that decision? We have a lot of code that returns <code>Seq</code>s by default (usually starting from results of a DB query and successive transformations). I tend to want to make the return types <code>Traversable</code> by default and <code>Seq</code> when specifically expecting a given order. But I don't have a strong justification for doing so.</p>
  
  <p>I am perfectly familiar with the definition of each trait, so please don't answer with defining the terms.</p>