Andrei Alexandrescu escribió:
Simen Kjaeraas wrote:
Andrei Alexandrescu wrote:
So please let's vote once and for all.
Andrei
Do let's. My first vote goes to first/last, with head/toe at second
place.
--
Simen
Ok, after looking at my code I discovered a huge problem with "first".
("Last" is cool.) If all you do is implement them and use them with
foreach, fine. But if you need to call them manually (which is the case
sometimes), you get really badly interacting terms there. Look at this,
taken from real code (the filter function):
while (!_input.empty && !pred(_input.first)) _input.next;
I can see the putative user scratching their head: "Ok, so I start
iteration with the first element, then I move to the next one... but
then why the heck am I looking at the first again?"
"First" must go.
Shouldn't the user think the same with "head" or "front"?
I think the problem is "next" in this case: it should be "moveToNext" or
something that shows that you are changing the input, not just
requesting the next element in the range.
But keep "next". Once the user starts using ranges, he'll understand the
terminology, which is pretty straightforward.
I vote for first/last.