On Sat, Sep 19, 2009 at 9:45 PM, David Green <david.gr...@telus.net> wrote:
> On 2009-Sep-19, at 5:53 am, Solomon Foster wrote: > > The one thing that worries me about this is how :by fits into it all. >> rakudo: given 1.5 { when 1..2 { say 'between one and two' }; say >> 'not'; }; >> rakudo: given 1.5 { when Range.new(from => 1, to => 2, by => 1/3) { >> makes me very leery. I know :by isn't actually implemented yet, but what >> should it do here when it is? >> > > Exactly: 1.5 is "between" 1 and 2, but if you're counting by thirds, 1.5 is > not in the list(1..2 :by(1/3)). Sure, we can stipulate that this is simply > how the rules work, but people are still going to get confused. On the > other hand, we can get rid of the list/series/:by part of Ranges without > losing any power (move that capability to ... instead), and cut down on the > confusion. 1..2 is used abstractly to indicate a range, even though it's actually an iterator that will return two values. However, once you apply an explicit :by, I think you've gone past that abstraction, and it's no longer reasonable to expect that values that fall between your iterations will match.