Documentation on for-loops and scoping (in and out of REPL)?

So I can see that issues of scoping are a HUGE subject of debate in different places, and I don’t mean to join the debates over what julia should do.

Rather, I was hoping someone could lay out what the current state is (or, if all these discussions have resolved things, planned changes). I’m really struggling to figure out what behavior to expect right now…

e.g. for loops seem to not have access to variables outside the for loop in the REPL:

julia> i = 0

julia> for j in 1:10
           i += j
ERROR: UndefVarError: i not defined
 [1] top-level scope at ./REPL[4]:2 [inlined]
 [2] top-level scope at ./none:0

But they do inside a function?

julia> function test()
           i = 0
           for j in 1:10
              i += j
           return i
test (generic function with 1 method)

julia> test()

Is this JUST about what happens in the REPL / jupyter notebooks? Is this an example of a more general rule that also applies to scoping of functions, etc. in the REPL / jupyter notebooks?

Again, no desire to join battles over shoulds, just want to understand what behavior to expect now in 1.1.0.


The semantics provided by the language per se is well-documented:

But in IJulia, it is overridden for the global scope:

ahhh, ok… that does help clarify a lot, thank you. That difference was very confusing…

1 Like