Ali Çehreli:

iota got it wrong. I would expect new users to be confused by iota(5). Is that "ends at 5" or "begins with 5"? The latter is more consistent with how the function parameters at the and can have default values. So it is likely to be perceived as the following. Ignoring that iota is a template:

  /* ... */ iota(size_t begin, size_t end = size_t.max);

I was the one that asked for the iota(5) syntax. The name iota comes from APL, where a single argument is supported, with similar meaning. But the idea of a single argument comes from Python:

range(5)
[0, 1, 2, 3, 4]

I have taught Python, and newbies understand/know that a range(5) means a range of five items. The only problems is knowing where it starts. But when you teach Python you say that indexes are 0-based, so they quickly remember that the range of five items starts from zero. In D iota does the same. And so far I have had no problems from using iota this way.

So I think iota got it right.

Instead, what I have had to tell friends reading my D code is what the heck "iota" means. The meaning of the word "range" in Python is simpler to guess.

Bye,
bearophile

Reply via email to