On Sep 10, 2009, at 2:44 AM, Eduardo Cavazos wrote:
Aziz,
Thanks for the reply. I agree with you that there are multiple
interpretations that make sense.
My question comes as a result of discussions with jao. They got me
thinking about what barriers to a highly dynamic development runtime
are inherent in R6RS. It appears that there actually aren't that
many, if any; it's mostly up to the implementor.
In my view, R6RS-style libraries/modules *allow* (but does not
require) implementations to be static at run time.
Abdulaziz Ghuloum wrote:
Why would that be absolutely necessary? Or did you mean reload the
library when you said recompile the library?
Hmmm. I thought recompilation would be necessary in the case of
procedures that depend on the changed procedure. But if reload would
do the job, then cool.
There's nothing special about procedures. At run time, there are
variables (some of which might be bound to procedures) and there are
values (some of which are procedures). The compiler may "inline"
anything it can (including procedures), and inlining procedures is
just a special case of copy propagation.
then recompile any currently loaded dependent libraries (and in a
*really* dynamic environment, update any currently running threads/
applications which depend on the changed library).
If you're going this far, you might as well start a new ikarus
instance, no?
Well, I'm not necessarily lobbying for this behaviour in Ikarus. But
this is a litmus test for the hardcore dynamic lanuage folks. I.e.
can they make a source change and have a running application reflect
the change. Smalltalk and Factor do this for example.
Dude, you can set! a variable, set-car! a pair, or vector-set! a
vector, and its effect is immediate everywhere, no? I don't get what
this test is all about.
I know of one particular argument in favor of this behaviour.
Sometimes you have to get your program into a certain state in order
to test some code change. It's nice to get your program to that
state interactively, then make code changes until you see the
behaviour your want.
No, that's not nice. :-)
As opposed to maybe writing a script which gets your program to that
state, and using it each time you want to test the code change.
This is more reusable, reliable, and predictable. You can add that to
your test suite and run it every time you make a change. I mean, a
text file doesn't cost money, right? Why is it nicer to type things
in rather than load them from a file?
Or take for example one of the graphics demos; it's nifty to get it
running and then notice the effects of changing the code in a live
fashion. So live coders (the performance art sort) would want this
sort of thing.
This is a different thing. This is not development and debugging.
This is performance art. (Karate folks can break bricks with their
heads, but that doesn't mean you should walk around smashing your head
to every wall you see!) And yes, you can already do all of this with
very little or no change to your programs and libraries.
Aziz,,,