Hi! I have encountered this weird behavior when using Julia. If I define:

```
function f(x)
if x > 0
function g()
1
end
return g
else
function g()
0
end
return g
end
end
```

I expect that `f(1)`

yields a function `g`

that is constantly 1, while `f(0)`

would yield a function `g`

that is constantly 0. But I get the following:

```
julia> g = f(1); g()
0
julia> g = f(0); g()
ERROR: UndefVarError: g not defined
Stacktrace:
[1] f(::Int64) at ./REPL[15]:11
[2] top-level scope at none:0
```

So in the first case it took the wrong `if`

branch, while in the second it is even worse, as if `g`

wasn’t defined. Can you help me understand what is happening? Thanks!