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!