Use a closure:
julia> f(state=0) = ()->state+=1
f (generic function with 2 methods)
julia> foo = f()
#7 (generic function with 1 method)
julia> foo()
1
julia> foo()
2
julia> foo()
3
julia> foo.state
Core.Box(3)
julia> foo.state.contents
3
Use a closure:
julia> f(state=0) = ()->state+=1
f (generic function with 2 methods)
julia> foo = f()
#7 (generic function with 1 method)
julia> foo()
1
julia> foo()
2
julia> foo()
3
julia> foo.state
Core.Box(3)
julia> foo.state.contents
3