I mean something like eval(MyModule, :(newfunction(x)=x+1))
Hopefully 1. ESS will be made compatible/depend on julia-mode soon, see https://github.com/emacs-ess/ESS/pull/122 2. then I can add extend ESS to handle this (and also line numbers for errors, etc). Best, Tamas On Wed, Feb 25 2015, [email protected] wrote: > I guess you mean using the module's eval to add functions/variables ? This > sounds like an excellent > option. > > I am using emacs/julia mode + konsole. > > On Wednesday, February 25, 2015 at 11:39:31 AM UTC+1, Tamas Papp wrote: >> >> Hi John, >> >> In fact you can eval "into" a module and thus add functions/variables >> without reloading the whole thing. Juno supports this, I am working on >> ESS to provide the same functionality. What IDE are you using? >> >> Best, >> >> Tamas >> >> On Wed, Feb 25 2015, [email protected] <javascript:> wrote: >> >> > I found a solution. If something is wrong, please correct it in this >> thread. >> > >> > -- To make a module, you must put code in a single module expression >> > 'module MyModule ... end'. >> > You may 'include' other files within this expression which has the >> > effect of literally writing the contents >> > inside the module expression. >> > -- Once the module expression is executed, you cannot add functions (or >> > other things, like global constants ?) >> > to the module. If you again load code with a module expression >> naming >> > the same module, it will overwrite >> > the original module. (you can have a submodule MyModule within >> > MyModule. You will get a warning that >> > MyModule is being overwritten, but in fact it is not. But, this may >> > have been fixed by now.) So if you >> > change anything in a module, you must reload the entire module. But, >> > this is not quite true. If a function >> > already exists from the previous module expression, you can redefine >> it >> > by qualifying it with >> > 'MyModule.funcname(...'. In this function, you also have to qualify >> > all types that were defined inside the >> > module, (and maybe other things ?) >> > -- Reloading the module may cause warnings to be printed at the repl. >> For >> > instance, for me, methods that extend >> > base functions cause 'new definition is ambiguous with' warnings, >> and >> > 'Method definition ... overwritten' warnings. >> > I don't know the significance of these warnings. But you may have >> > problems (see below). I don't know if they >> > are related to the warnings printed at the repl. >> > -- After reloading the entire module, code, in particular test code, >> may >> > fail with error messages printed. Restarting >> > Julia, of course will fix this. >> > -- But, here is a solution that lets me edit a line in a module, >> reload >> > it and run the tests relatively quickly: >> > Run the test code. At the line number named in the error message, >> > qualify calls to a macro with the name >> > of the module, eg. 'MyModule.@mymacro'. Probably the same applies >> to >> > function calls. You may need to >> > qualify calls in some preceding lines, as well. Run the test suite >> > again, and repeat the previous step. In the >> > end, I am able to run the entire test suite with about 5 percent of >> > the calls (every call in this test suite is to >> > one of two macros) qualified. If you understand the problem >> better, >> > you may be able to predict which calls >> > need to be qualified. Anyway, after doing this, my workflow is >> > unstuck! I read a lot of posts on how to deal >> > with this problem. Fortunately, there is a line in a post by Tim >> Holy >> > mentioning qualifying calls to module >> > functions in test code. Thanks, Tim! >> > >> > -- John >>
