I wonder if there is also system-specific issues going on here. Under 
Windows, I need to use the “include()” function to register any updates I 
make to the code in modules outside of the notebook even though the source 
file is in a folder within the LOAD_PATH. If I just use the “using 
myModule” syntax, the module loads but then the notebook is oblivious to 
any changes I make outside that environment even if I re-execute the 
“using” command. This issue would go away if Autoreload worked for me under 
Windows; it works fine under Yosemite but doesn't release the write 
permission on the source code file under Windows 7 (with Julia 0.3.3).

There are two other unexpected things, at least to me, regarding “include” 
and “using”. First, to access exported functions you seem to have to 
execute two “using” statements if your module file name is not the same as 
the actual module name. I had assumed that executing a “using 
MyModuleFileName” command would bring in all the exported functions since 
it already brought in “MyModule” in a way that enabled “MyModule.foo()” to 
work. Executing an “include” with the file name followed by a “using” with 
the module name also works. This seems like another case where we have to 
use the “include” statement (or two “using” statements) even though 
everything is within the LOAD_PATH (at least under Windows.)

The other issue is that functions that are exported seem to be frozen—I 
cannot find a way to update them in the notebook after I make changes to 
the module code in an editor. Executing another “include()” statement 
doesn't seem to work even if the module name and module file name are the 
same. I am running into these issues since I am developing new functions 
within a notebook and then, in another notebook session, testing the 
function after moving it to a module. In most cases, I need to tweak the 
function after I have placed it in a module.

Reply via email to