From: muraken@... Date: 2020-04-24T05:09:41+00:00 Subject: [ruby-core:98042] [Ruby master Feature#16812] Allow slicing arrays with ArithmeticSequence Issue #16812 has been updated by mrkn (Kenta Murata). Assignee set to matz (Yukihiro Matsumoto) Status changed from Open to Assigned I'm positive this if the behavior is the same as Python's list slicing. If the behavior will be different from Python's, I'm negative because it confuses PyCall users. ---------------------------------------- Feature #16812: Allow slicing arrays with ArithmeticSequence https://bugs.ruby-lang.org/issues/16812#change-85272 * Author: zverok (Victor Shepelev) * Status: Assigned * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) ---------------------------------------- I believe when concepts of ArithmeticSequence and `Range#%` were introduced, one of the main intended usages was array slicing in scientific data processing. So, it seems to make sense to allow this in `Array#[]`: ```ruby ary[(5..20) % 2] # each second element between 5 and 20 ary[(0..) % 3] # each third element ary[10.step(by: -1)] # elements 10, 9, 8, 7 .... ``` PR is [here](https://github.com/ruby/ruby/pull/3055). My reasoning is as follows: 1. As stated above, ArithmeticSequence and `Range#%` seem to have been introduced exactly for this goal 2. Python has its slicing syntax as `begin:end:step` (with a possibility to omit either), and it seems to be well respected and used feature for data processing. So I believe it is useful, and relatively easy to integrate into existing functionality I expect the usual "it is ugly and unreadable!" backlash. I don't have an incentive, nor energy, to "defend" the proposal, so I would not. -- https://bugs.ruby-lang.org/ Unsubscribe: