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.