[swift-evolution] rename dropFirst() and dropLast()

Daniel Duan daniel at duan.org
Mon Dec 28 16:27:19 CST 2015

Hi all,

Today I made a mistake trying to use .dropFirst() to remove an array element in-place. I have the feeling that I will second-guess myself the next time.

IHMO, now that dorpFirst() is no-longer a free function, it's name is hardly distinguishable from .removeFirst(). When compared side-by-side, .dropFirst()  does seem to suggest “return the rest". But this subtlety is easily lost for users who don’t use both on regular bases. It’s worse for non-native English speakers.

Looking at a few other languages that provides a .dropFirst() for their list/array/sequence:

* Haskell’s “tail" only makes sense when paired with “head" (and not that self-explanatory). 
* Rust doesn’t have a direct counterpart, but split_first() return both head and tail in a tuple.
* Scala and Ruby has a .drop(), but there’s no equivalent of .removeFirst() to cause confusion.

There must be a better name for this important method. I came up with:

.dropFirst() => .excludeFirst()

What do y’all think?

(Everything above applies to .dropLast())

- Daniel

More information about the swift-evolution mailing list