I got an architectural problem here.
Let say there is an
IShell. It mainly responsible to map user's commands (represented as a linux-like strings) to an appropriate
Those executables are pretty various. Hence, there are different modules/assemblies/dlls (or how-the-hell-you-call-it):
Module3 all providing different implementations of abovementioned
Now there is a requirement to be able substitute any of those modules on the fly, at the run time, without stopping
IShell instance. Obviously, there gonna be some kind of API, like
/api/update/module1 and... it might return a raw code to be compiled locally (what are advantages and disadvantages?) or it might respond with precompiled *dll.
No matter how, at some point
IShell will eventually receive newest version of particular module. And here emerges the biggest problem. Assuming I can "pause" what's happening inside, what's the clearest and robust way to substitute currently loaded module with a new one?
Since most of the code written in Haskell, I am definitely interested in Haskell-related solution. Or, at least, I'd like to acknowledge the fact that there is no one.
P.S. If someone of you, guys, is aware of concept might work, but not Haskell's realization of that one, still let me know. Thanks in advance.