scala, guidelines on return type - when prefer seq, iterable, traversable
===

when do you choose to type a given funciton's return type as seq vs iterable vs traversable (or alternatively even deeper within seq hierarchy)? how do you make that decision? we have a lot of code that returns seq's by default (usually starting from results of a db query and sucessive transformations). i tend to want to make the return types traversable by default and seq when specifically expect a given order. but i dont' have a strong justification for doing so.

i am perfectly familiar with the definition of each trait, so please no answers defining the terms.