Aside from mutability, though, tuples can do pretty much anything lists can, and usually a bit more efficiently.
Immutable dicts can have stuff added and removed in O(log n) time, without affecting previous versions.
Scala's immutable vectors can have appending/prepending/concatenation/splitting/insertion/deletion in O(log n) time, without affecting previous versions. it's log base 32, so for any arrays using integer indexes, it'll never go above ~7, so it's basically constant.
Basically, you get (almost) the performance of mutable data structures, except you don't mess up the old versions of the thing every time you change something. It's really pretty incredible, the performance characteristics people manage to get with structural sharing: http://www.scala-lang.org/docu/files/collections-api/collect...
The new ConcurrentTrie is also a great addition to 2.10.