Hi,
I use a similar method; however, what would really help is an option to
"drop to the REPL" after code execution, in order to inspect the state of
variables. Say, to call "julia --no-exit test1.jl" and after the last line
in test1.jl the REPL would activated.
Similarly, in Matlab, I often write the initial prototype code by inserting
a large number of "keyboard" statements; when the keyboard statement is
reached MATLAB stops and goes to the REPL. Then I inspect a few variables
and issue a "dbcont" statement to continue to the next instance of the
keyboard statement. I know Julia has a debugger, and it may support this
use, but I have not tried whether this is possible to use it for a similar
workflow. After such a prototype run I typically extract the verified code
into a test case without any keyboard statements.
Best,
Sebastian
On Saturday, 5 July 2014 13:59:39 UTC+1, J Luis wrote:
>
> I use a trick that makes use of the fast Julia's start time. So I create a
> small "do_it.jl" file with only, let's say
>
> using MyModule
> exec_this_fun()
>
> than on the shell (Windows cmd in my case), I just do
>
> julia do_it.jl
>
> This has the advantage of working when the "reload("MyModule") doesn't
> work, and I have found many cases where it doesn't (for instances when
> writing ccal wrappers to some C library)
>
> Sábado, 5 de Julho de 2014 11:42:26 UTC+1, Johan Sigfrids escreveu:
>>
>> There is a Autoreload.jl <https://github.com/malmaud/Autoreload.jl>
>> package modeled after IPython's autoreload extension.
>>
>> On Saturday, July 5, 2014 2:47:24 AM UTC+3, Andrei Zh wrote:
>>>
>>> I'm trying to find my way developing Julia code interactively. In other
>>> languages (e.g. Python, R, Octave, etc.) when working on some piece of code
>>> I open a file with it and a console. Each time I change something in the
>>> file, I send that part to console and thus get new state. When I change a
>>> lot of things, I just send the whole file, replacing all definitions. It's
>>> quite convenient, and I'm pretty sure many of you are familiar with this
>>> practise.
>>>
>>> In Julia, however, I faced several challenges.
>>>
>>> 1. When developing modules (and I really like modular systems) I have to
>>> either run "using MyMod" after each change, or use qualified names (e.g.
>>> "MyMod.somefunc()"), which is really annoying. In Python, for example, all
>>> definitions sent to console go right to a global namespace, which is pretty
>>> convenient within single module. And for several modules there's IPython's
>>> "%autoreload 2".
>>>
>>> 2. If I abandon modules, on other hand, I can't redefine constants. So
>>> if, for example, I define type Point in global namespace, then change it
>>> and want to load new definition, I just get "invalid redefinition of
>>> constant Point" error.
>>>
>>> So I want to know how YOU cope with these issues. Are there any best
>>> practises for interactive development? Are there any workarounds for cases
>>> I mentioned?
>>>
>>> Thanks you,
>>> Andrei
>>>
>>