On Saturday, 28 December 2013 at 19:22:25 UTC, Francesco
Cattoglio wrote:
On Saturday, 28 December 2013 at 16:13:45 UTC, Jakob Ovrum
wrote:
Alright, so require division for bidirectionality when given a
custom step. There's no reason division should be required for
bidirectionality in the most common case of iota(start, end).
Ok, now I finally get your point. It goes something along the
lines of: "if no step is provided, then we can assume end can
be reached by just stepping forward (incrementing by one)". It
makes sense, but personally I don't like to make assumptions. I
think assumptions in library code are one of the worst sources
of nasty bugs in user code.
As long as `start < end` is true in the beginning, that's a
perfectly reasonable assumption to make, especially if "end can
be reached" means `start >= end` is true after some `n` number of
increments.
If we can't make any assumptions about the chosen concept
primitives then they're no good as primitives at all.