On Mon, Dec 28, 2015, at 04:23 PM, Kevin Ballard wrote:
> That said, `droppingFirst` sounds pretty weird to me. "drop" (and the related 
> verb "take" that we're not using) has precedent in multiple languages (Rust 
> and Haskell come to mind) to mean "return a new sequence that skips the first 
> N elements". And I'm not aware of any language that sets precedent for the 
> verb "drop" to mean "mutate the receiver".

Hmm, I just took a look, and while Rust does use "take", it actually doesn't 
use "drop" (but Haskell does). Instead it uses "skip", which seems like a good 
candidate if we're going to rename this. I'm tempted to say we should use 
"take" instead of "prefix" as well, because `seq.prefix(3)` isn't actually 
immediately obvious what it does (as the verb "prefix" usually means to add 
onto the front, not to take the front). And we can use "takeLast" for "suffix" 
(neither Rust nor Haskell appears to have an equivalent of takeLast; I believe 
Rust doesn't because none of its iterator adaptors use dynamically-allocated 
memory, and I think Haskell expects you to just do `reverse . take n . 
reverse`). Although I do notice Haskell has a function dropWhileEnd that drops 
the suffix, which suggests "takeEnd" and "dropEnd" here.

Which is to say, if we're going to rename these methods, my vote is:

prefix -> take
suffix -> takeEnd or takeLast
dropFirst -> skip
dropLast -> skipEnd or skipLast

-Kevin Ballard
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to