My question, is triggered by a post by Peter Kriens: What If OSGi Ran Your Favorite Language?
So, is it possible for Haskell to implement the OSGi specifications? If not, why?
I guess you are asking whether there could be an OSGi for Haskell (question 1), rather than whether Haskell could be used to implement the OSGi specification (question 2).
About 1: I don't think it is possible without putting up several layers of indirection. The most important language feature necessary to implement OSGi for a programming language is dynamic loading and unloading of modules at run-time. Now, OSGi - in a simple way - is a clever way to use Java class loaders to achieve this, while the developer of code does not notice it, but continues to use "import com.mypackage...".
I don't know sufficient Haskell, but I doubt Haskell has the hook-points for an external library to get inside the Haskell interpreter so that loading modules can be intercepted and dynamically rerouted to another haskell file.
About 2: If you are willing to compromise the language support, but are fine with loading modules by string literals, then implementing the core ideas of OSGi and using it in Haskell will be a nice little project.
My favorite implementation of a plugin-framework (close to OSGi in spirit) is the Java Plugin Framework. Less code, than one might expect.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With