In a macro I need to first define a large number of functions and then merge them into one block and return that as the code from the macro. Is there a simpler/smarter way than what I currently do, which is based on explicitly adding
using Base.Test # We want to find a way to merge the definition of two (or more) quoted function # bodies into one quoted expression. ex_a = quote function a() b() end end ex_b = quote function b() 2 end end ex_c = quote function b() c() end function c() 3 end end ex_funcs = [ex_a, ex_b, ex_c] function concat_expr_blocks(a, b) args = a.args for barg in b.args push!(a.args, barg) end a end function concat_expr_blocks(blocks) ex = blocks[1] for i in 2:length(blocks) ex = concat_expr_blocks(ex, blocks[i]) end ex end eval(concat_expr_blocks(ex_funcs[1:2])) @test a() == 2 eval(concat_expr_blocks(ex_funcs)) @test a() == 3 Thanks for any pointers. I'm sure there is an obvious way but I can't see it right now... ;) Regards, Robert
