I'm trying to write a small module that allows one to define a Step that 
describes operations on an HDF5 file.

immutable Step
    func::String
    a_ins::(String...) #attribute inputs
    d_ins::(String...) #dataset inputs
    a_outs::(String...) #attribute outputs
    d_outs::(String...) #dataset outputs
end

The idea is to gather up the inputs specified by a_ins and d_ins, pass them 
to the function specified by func, and place the outputs in HDF5 datasets 
and attributes as specified by a_outs and d_outs.  The issues I'm having is 
finding the correct function given that it is defined in some other Module. 
 A minimal example is given by

module Bar
bar(s::String, args...) = eval(parse(s))(args...)
export bar
end
using Bar
foo(s::String, args...) = eval(parse(s))(args...)

baz(x...) = +(x...)

baz(4,5,6)
foo("baz",4,5,6)
bar("baz",4,5,6) # ERROR: baz not defined

One path I can see is that when I create the Step I could pass an actual 
function to the constructor.  If I knew how to access the fully qualified 
name of the function, I could record that instead of just the name.  I'm 
not sure if that is possible. Any ideas on how I should approach this?

Also I probably shouldn't be using eval(parse(s)) since that opens up the 
opportunity for arbitrary code execution.  

Reply via email to