Sorry, I have read a great deal of the documentation but I can't find anything on nested modules. Could I persuade you to direct me to a doc or an example? I think that a nested module would be optimal, I have just been unable to figure out how to do it.
Ok, here goes trying to explain my idea..... I am sorry that I don't have a better example of how my plugin system works, I am building it out mostly as an experiment and it is hard to explain the in and outs yet. But the idea is that you have a hub that all of the plugin systems attach to, then the plugin systems can call each other via the hub, so you could have a plugin system called `executors` which is on the hub at `hub.executors` and another plugin system called `databases` which is at `hub.databases`, then from within the `databases` plugin system you could call functions off the hub in the `executors` plugin system and vis versa (as described above). This creates a shared, completely pluggable design so that code can be dynamically loaded and unloaded. This also enables a software design where the code can be completely pluggable, making code replacement something that is always native to the programming paradigm. Again, this is just a research project of mine, and I think that Julia is the best language to cover many of the other aspects of the research project I am working on, I have also implemented the plugin system (it is dirty, but it works...) in Julia and it runs flawlessly, thanks to Julia being very well written. I am just trying to make it more Julian, despite the fact that I fully recognize that it is not a very Julian way of doing things. Thanks again for your help and comments! On Tuesday, August 23, 2016 at 8:41:48 PM UTC-6, Cedric St-Jean wrote: > > I think we need a more complete description of your problem, because a > plugin can be a lot of things, and I don't know about Salt. In any case, re. > > plugin(hub, "subsystem.module.function")(args/kwargs) > > You're right, that doesn't look very Julian. Would something like this > work? > > module Subsystems > type ModuleFunction > ... > end > end > > function plugin(hub::Hub, mf::Subsystems.ModuleFunction, args..., kwargs > ...) > ... > end > > That way you can define one plugin function per type, and let multiple > dispatch do the job. > > On Tuesday, August 23, 2016 at 7:21:54 PM UTC-4, Thomas Hatch wrote: >> >> I am asking this just to look for some opinions or ideas on the most >> Julia-like way to do something, as usual, I have no complaints with Julia :) >> >> I am working on writing a plugin system in Julia and had a syntax >> question. The plugin system was originally written in python and was based >> loosely on the Salt plugin system. The plugin system allows for plugin >> subsystems to be defined and then they all share a data "hub" so the plugin >> systems can easily cross communicate. >> >> In python the plugin system uses nested python objects to directly >> reference the plugin function: >> hub.subsystem.module.function(args/kwargs) >> >> In Julia I have implemented it like this: >> plugin(hub, "subsystem.module.function")(args/kwargs) >> >> Would there be a better, more Julia-like way to represent this concept? >> >> >> Thomas S. Hatch | Founder, CTO >> >> 3400 N. Ashton Blvd, Suite 110 | Lehi, UT 84043 >> [email protected] | www.saltstack.com <http://saltstack.com/> >> >
