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.
>>>
>>
>>

Reply via email to