That's not a good idea – or at least it's bound to cause you some nasty problems. There is a lot of indexing code in Base (and probably elsewhere too) that depends in individual Ints being iterable like this. I'm not a huge fan of it personally, but it seems be pretty handy when trying to write generic multidimensional array code – the idea being that a scalar behaves like a zero-dimensional tensor. In any case, it's not a thing that can be changed by itself without also changing a lot of other code that relies on the current behavior.
> On Mar 29, 2014, at 10:25 AM, Tom Lee <m...@tomlee.id.au> wrote: > > I've only been using Julia a few weeks and typos of this sort must have cost > me several hours of debugging in total. You have given me an idea though, I > think I try to find the method in Base for iteration over an integer and edit > it myself to make it raise an error. > > Cheers, > Tom > >> On Saturday, 29 March 2014 08:29:22 UTC-4, andrew cooke wrote: >> >> sorry, i wasn't clear. >> >> Base defines the methods necessary for it for iteration "over" an integer. >> >> julia> for i in 8 >> print(i) >> end >> 8 >> >> i am suggesting this is not a good idea. >> >> andrew >> >> >> >>> On Saturday, 29 March 2014 00:42:35 UTC-3, Leah Hanson wrote: >>> You can make any type iterable (by defining start, next, and done); you >>> could, if you wanted, make Int/Integer/whatever iterable. Making an Int >>> literal a syntax error here would create inconsistent behavior when someone >>> (inevitably) decides to iterate over Ints for some reason. >>> >>> I assume you got a NoMethod error about start? >>> >>> -- Leah >>> >>> >>>> On Fri, Mar 28, 2014 at 8:19 PM, andrew cooke <and...@acooke.org> wrote: >>>> >>>> maybe there's a good reason for this (i suspect there is, but i'm not >>>> seeing it right now). but if there isn't, removing it might save some >>>> poor typist or confused newbie from a frustrated debugging session. >>>> >>>> the problem is that >>>> >>>> for i in 8 >>>> ... >>>> end >>>> >>>> isn't a syntax error (when what was meant was the range 1:8) >>>> >>>> cheers, >>>> andrew >>>