Yes. The recommended work-around/workflow is to make changes within the module declaration, and call `reload` to get those changes. It's a similar issue to what is discussed here: https://github.com/JuliaLang/julia/issues/265 (and could potentially be changed whenever that is resolved)
This might also be useful or informative as an example: https://github.com/malmaud/Autoreload.jl On Sun, Sep 7, 2014 at 5:02 PM, Andrei Zh <faithlessfri...@gmail.com> wrote: > Thanks, Isaiah. Can you please add more details about closing Julia > modules? Is it like finalizing them so that no more details can be added to > it later? If so, what is rationale behind it? > > On Sunday, September 7, 2014 6:14:55 AM UTC+3, Isaiah wrote: >> >> I believe this is not currently exposed, although it may be worth >> pointing out that any internal variable from an imported module is readable >> with `MyModule.foo`. Julia modules are closed after declaration, although >> you can sort of cheat by calling `MyModule.eval(::Expr) -- the downside >> being that the call will be interpreted. >> >> You could do a limited (read-only) form of this in a macro by basically >> checking all names in a macro against the current scope and then prepending >> `MyModule.X` if it is not found. I've wanted this occasionally, because it >> would make copy-pasting code from a module somewhat easier, for debugging >> purposes. >> >> >> On Fri, Sep 5, 2014 at 4:58 PM, Andrei <faithle...@gmail.com> wrote: >> >>> In module.c in Julia sources I see "jl_set_current_module()" function. >>> Is it somehow exposed to Julia API? >>> >>> To give you some context, in Common Lisp (as well as some other >>> dialects) there are 2 separate macros for dealing with packages (analogue >>> of modules in Julia): >>> >>> defpackage - defines new package and switches to it >>> in-package - simply switches to specified package >>> >>> One great feature that these macros bring is ability to easily switch >>> context of execution. E.g. in REPL (code simplified): >>> >>> ;; initially working from cl-user package >>> cl-user> (defpackage foo (:use :common-lisp)) ;; automatically switched >>> to new package >>> foo> (defvar x 1) >>> X >>> foo> x >>> 1 >>> foo> (in-package :cl-user) >>> foo> x >>> ;; error: x not defined in :cl-user >>> >>> This is extremely helpful for both - package extension and >>> debugging/interactive development. E.g. we can switch to a module in >>> question and get all internal variables visible, play around in that >>> context and go back to main package without stopping REPL. >>> >>> So I'm wondering if something like this is possible in Julia at all. >>> >> >>