Gus Wirth wrote: > Tracy R Reed wrote: >> Andrew Lentvorski wrote: >>> Functional progrmming doesn't need a cheerleader. It needs a problem >>> to which it is an actual solution. >> >> It seems Erlang was the right choice for Ericsson's phone switches. >> And for jabberd. I think Lisp was the right choice for emacs. And as >> the number of cores grow in our cpu's I think we will find many more >> problems to which functional programming is an actual solution. Can >> you do hot swapping of code in any non-functional language? The >> paralellism just seems to fall out nicely when using a side-effect >> free language as well. >> > > Hot swapped code? Sure, it's trivial. Here's a snippet from FreePascal: > > MyObject.SomeProcedure := @SomeOtherProcedure;
And you can do this in running code? Does the running code re-translate the source when it sees a change? Maybe I'm misinterpreting hot swap (or you are?). > > This replaces the procedure that was originally associated with the > object MyObject with the replacement procedure SomeOtherProcedure. It > does this by just swapping out pointers in the virtual method table. The > only restriction is that it has to have the same signature (type and > order of parameters). Because of this, you can store a bunch of routines > in a shared object (*.so) and use dlload to provide the binding. Your > program still calls MyObject.SomeProcedure but you can get totally > different code execution depending on what you bind to the procedure call. > > You can even store entire classes in a shared object and dynamically > load/unload them, so it's feasible to have a same-named class do > different things depending on where you got it from. This could be very > useful where you want "business rules"[1] customized to each customer > but want all the calling conventions to remain the same. > > Gus > > [1] I use this term only in the sense that there are no polite words to > describe the steaming pile of dung that some people think is logic. > Regards, ..jim -- [email protected] http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg
