Sadly, R does not. 1:0 expands to c(1, 0). This is something that has burned a 
lot of people in my experience. I imagine this is inherited from S.

 — John

On Jul 3, 2014, at 2:05 AM, Tobias Knopp <[email protected]> wrote:

> Just as a side note (I entirely agree with Stefan), Matlab behaves the same 
> as Julia:
> 
> >> 3:1
> 
> ans =
> 
>    Empty matrix: 1-by-0
> 
> 
> Am Donnerstag, 3. Juli 2014 03:38:32 UTC+2 schrieb Stefan Karpinski:
> It changes the meaning of a:b in a capricious way based on their values, 
> which, while often appealing for the immediate situation – and thus rampant 
> in dynamic languages – is almost always terrible for writing predictable, 
> reliable code.
> 
> 
> On Wed, Jul 2, 2014 at 1:07 PM, Jay Kickliter <[email protected]> wrote:
> I assume that when I wake up at 5 AM to finish some DSP code. Really, it was 
> just a stupid mistake. From a non-programmer's perspective (me), it seemed 
> like it should have work. If you think that would be dangerous, I'll take 
> your word for it.
> 
> 
> On Wednesday, July 2, 2014 8:26:10 AM UTC-6, Stefan Karpinski wrote:
> Why would one assume that the default step size is -1 when the start is 
> bigger than the stop? The documentation for ranges clearly says that the 
> default step size is 1 unconditionally, not that it is sign(stop-start). That 
> would, by the way, be a very dangerous behavior. Perhaps a sidebar on the 
> colon syntax is warranted in the manual control flow section on for loops, 
> including examples of empty ranges and ranges that count downwards.
> 
> 
> On Wed, Jul 2, 2014 at 9:53 AM, Jay Kickliter <[email protected]> wrote:
> I just realized that it works if I rewrite the range as 10:-1:1. It seems to 
> me that either big:small should work with a default step size of -1, or the 
> documentation needs a note. 
> 
> 
> On Wednesday, July 2, 2014 7:32:10 AM UTC-6, Jay Kickliter wrote:
> Are they meant to work? I could only find one meaning of them not working 
> (issue 5778).
> 
> Here's an example:
> 
> julia> for i = 1:10
>            println(i)
>        end
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 10
> 
> julia> for i = 10:1
>            println(i)
>        end
> 
> julia> 
> 
> 

Reply via email to