The IPython autoreload extension does something quite similar to what has been discussed here ( https://ipython.org/ipython-doc/3/config/extensions/autoreload.html ). There are cases where it's actually very convenient, e.g. if you have results from a long-running calculation in an IPython notebook interactive session and you notice that you should change one of the classes, but don't want to rerun the whole calculation.
Some of this one gets almost for free in Julia with the Autoreload.jl package, since methods are outside of types in Julia, so there's no need to search for all object of a modified type in memory and add/modify the methods like in Python. (Modifying inlined methods is a bit of a problem, but one could probably extend Autoreload.jl to inject @noinline into modules.) Adding fields would only be possible in Julia if it were possible to overload field access ( https://github.com/JuliaLang/julia/issues/1974 ). That's essentially the way one does this in Python. You add a property getter y to class X, which allows you to access x.y: class X(object): On Friday, February 5, 2016 at 8:17:47 AM UTC+1, Tomas Lycken wrote: > > My main concern is predictability. > > Imagine that I define a type Foo and start playing around with it - define > some functions that work on foot, perhaps one or two types that hold foos, > and manipulate a bunch of Foo instances. > > Then, I redefine the Foo type - say, I add a field. Which of the other > things that I have defined are still valid? > > If I understand the motivation for this feature correctly, it's to make > exploratory programming easier. However, I think it would actually make it > a lot more difficult - it would basically give you a bazooka so heavy that > the only thing you can reasonably aim at is your own foot... > > //T > >
