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
>> tha...@saltstack.com | www.saltstack.com <http://saltstack.com/>
>>
>

Reply via email to