Miles Sabin's solution is also worth a look: https://gist.github.com/f83892f65f63b14a1f75
It uses dependent types which will be included by default in Scala 2.10. I don't consider this as "simple" but my point of view is that Computer Science is not "simple" :-). And having a language supporting that level of genericity is really helpful for type-safety and code reuse.