You don’t need the quote ... end block since you’re creating the expression
manually using Expr objects.
Removing that and changing $modules to modules.args should work alright I
think.
— Mike
On Tuesday, 30 December 2014 22:52:55 UTC+2, Ismael VC wrote:
>
> I get a different expression from parsing foo:
>
> julia> versioninfo()
> Julia Version 0.3.3
> Commit b24213b (2014-11-23 20:19 UTC)
> Platform Info:
> System: Linux (i686-pc-linux-gnu)
> CPU: Intel(R) Atom(TM) CPU N570 @ 1.66GHz
> WORD_SIZE: 32
> BLAS: libblas
> LAPACK: liblapack
> LIBM: libm
> LLVM: libLLVM-3.3
>
>
> julia> parse("import foo")
> :($(Expr(:import, :foo)))
>
> julia> parse("import foo, bar, baz")
> :($(Expr(:toplevel, :($(Expr(:import, :foo))), :($(Expr(:import, :bar))),
> :($(Expr(:import, :baz))))))
>
> This is returning the needed expression, but it's returning it like a
> function instead of executing it:
>
> julia> macro dynamic_import(modules)
> quote
> ex = Expr(:toplevel)
> names = map(m -> symbol(split(m, '.')[1]), $modules)
> for name in names
> push!(ex.args, Expr(:import, name))
> end
> return ex
> end
> end
>
> julia> @dynamic_import ["Newton.jl", "MyTest.jl"]
> :($(Expr(:toplevel, :($(Expr(:import, :Newton))), :($(Expr(:import, :
> MyTest))))))
>
> I thought I almost got this! :D
>
>
>
> El lunes, 29 de diciembre de 2014 21:45:45 UTC-6, Joshua Adelman escribió:
>>
>> I'm attempting to do some dynamic module loading and subsequent
>> processing and can't quite figure something out. I think I have a
>> reasonable (albeit maybe not idiomatic) mechanism for dynamically importing
>> a set of modules. See my stackoverflow question and the subsequent self
>> answer:
>>
>> http://stackoverflow.com/q/27696356/392949
>>
>> My next question is, after I've dynamically/programmatically imported a
>> bunch of modules, is there a way of iterating over that set of modules?
>> Specifically, if I store the module names as strings (e.g. ["mod00",
>> "mod01", "mod02"]) and each module contains some function `func` that isn't
>> exported, how would I call `mod00.func()` if I only know the string
>> "mod00"? I think this comes down to converting the string to a Module type,
>> but I'm not sure and haven't come up with something workable after a few
>> passes through the docs.
>>
>> Any suggestions would be very much appreciated.
>>
>> Josh
>>
>