"trans. (T. Onoma)" <transami / runbox.com> wrote: > | Separating Range functionality into a mixin might also make it easier to > | get goodies like negative-stepping and infinite ranges. > > Could you elaborate on this more? Right now, Range = Interval + Compactly Represented 'Arithmetic Series' Separating the two aspects would let us have intervals with +/-Inf as a bound, without having to worry about explicitly enumerating over the 'elements' (a pure interval would have no elements). For the arithmetic series aspect, I was thinking of replacing succ with step (i.e., have the range require a step(n) operator, and have succ call step(1) internally. This would let those classes that can implement an efficient step operator do so, and the ones that don't could have succ fundamental and step(n) call succ n times instead). I thought I had negative ranges worked out but I was wrong :) I'll have to think on it some more. martin