it's not about first elements - it is common for a function to demand a list that has some elements but would throw if it was passed an entirely empty list. this comes up in my code all the time. It's like nullness ... it's nice to flag it in the type system.