I saw the use of Module()
somewhere and it seems an equivalent of module A end
However, it is not documented at all.
Is Module(name)
a recommended way to create modules programmatically?
Also, I’d like to know how costly is module creation? Would there be any problem if I create a few thousand small modules in run time?
Are they as cheap as dictionaries?
Macros are preferable. You could do things like A = Module(:A)
and then eval(A, :( ... ) )
but that’s not the intended interface.
Cheap for what? Module bindings are stored internally in a symbol → binding hash table that is “fast”, but there’s some other associated state. If you need a dictionary, better to use a dictionary. That’s not what modules are for.
Ref julia - Best way to eval in a given scope / context which is in the form of a Dict? - Stack Overflow for a little more context. I’d love to hear other solutions, but the problem is presented so abstractly that it’s hard to understand what the actual goal is. As I alluded to in the last paragraph there, using eval is typically a big red flag… and especially so if you’re using it in a place where performance is critical.