From: Just Another Victim of the Ambient M.

# start.step(end, step_size)

# …wasn’t more like:

# step_size.step(start, end)

# …I just like having the start and end points grouped

# together with the

# step size singled out.

# Who’s with me?

i’m w you. ruby is with you (quite).

## irb(main):016:0> system “qri range.step”

------------------------------------------------------------- Range#step

rng.step(n=1) {| obj | block } => rng

```
Iterates over rng, passing each nth element to the block. If the
range contains numbers or strings, natural ordering is used.
Otherwise step invokes succ to iterate through range elements.
```

irb(main):018:0* (0…10).step(2) {|x| p x}

0

2

4

6

8

10

=> 0…10

obviously, by definition of range, it will not cater negative steps

irb(main):030:0> (10…0).step(-2) {|x| p x}

ArgumentError: step can’t be negative

maybe, before i request a change in step, i might as well request a

change in #succ/#next first, like succ receiving an optional argument,

eg…

1.succ #=> 2

(-1).succ #=> 0

1.succ(1) #=> 2

(-1).succ(1 #=> 0

1.succ(2) #=> 3

(-1).succ(2) #=> 1

1.succ(-1) #=> 0

(-1).succ(-1)#=> -2

so then,

irb(main):030:0> (10…0).step(-2) {|x| p x}

10

8

6

4

2

0

I believe facets already does the succ(-n) part, but does not handle

step(-n) which is pretty lame to me, imnho.

kind regards -botp