Claus Reinke wrote:
I hope this is understandable what I'm trying to achieve here.

not really: the only classes in haskell are type classes, and
if there is any class instance missing at compile time, you
won't even get to runtime, so you don't have to worry
about loading instances at runtime!-)

perhaps you could describe the problem you are trying
to solve, rather than the solution you would like to see?

In [gasp!] Java, you can just stick compiled files into a folder, and write your main program such that ts scans this folder, loads anything it finds, and executes specific code within it. In other words, an instant plugin system. I imagine this is what the original poster is after.

I'm not 100% sure, but I think hsplugins can dynamically load compiled *.o files in this way. Not sure whether this requires the person running the main program to have GHC installed though.

Unlike Java, there's no reflection capabilities. This isn't too bad though; just write your own class definition to allow your main program to query the thing it just loaded and find out what it offers.

 class Describable d where
   available_functions :: d -> [FunctionInfo]

data FunctionInfo = FunctionInfo {name :: String, description :: String, ...}

Unlike general reflection (where you try to guess things from function names and so on), this can be taylored to exactly the kind of plugins you're trying to write.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to