...and I just discovered Requires.jl. Fantastic stuff.
On Thursday, November 12, 2015 at 8:55:23 PM UTC-8, Seth wrote: > > This could be useful to me :) > > I have a couple of functions that require JuMP but I don't want to add > JuMP to my REQUIRE file. My usual tactic of checking isdefined(:JuMP) won't > work because JuMP uses macros that are evaluated prior to runtime. However, > I was unable to make the following code work: > > @cond (isdefined(:JuMP)) begin > function something_that_requires_jump(a...) > ... > end # function > end # macro > > Is there an accepted way to do conditional includes of packages that > contain macros? > > On Thursday, November 12, 2015 at 4:37:43 AM UTC-8, andrew cooke wrote: >> >> >> ah, great. i won't make a new package then. thanks. >> >> On Thursday, 12 November 2015 09:30:21 UTC-3, Yichao Yu wrote: >>> >>> https://github.com/JuliaLang/julia/issues/7449 >>> https://github.com/JuliaLang/Compat.jl/pull/131 >>> https://github.com/JuliaLang/julia/issues/5892 >>> >>> On Thu, Nov 12, 2015 at 7:23 AM, andrew cooke <and...@acooke.org> >>> wrote: >>> > >>> > when you're writing code that uses macros, supporting different >>> versions of >>> > julia seems to be more complex than normal. in particular, things >>> like: >>> > >>> > if VERSION > XX >>> > # code with macros here >>> > end >>> > >>> > don't work as expected, because macro expansion occurs before runtime >>> > evaluation. so the macros are expenaded whatever version. >>> > >>> > given that, i have found this simple macro to be useful; >>> > >>> > macro cond(test, block) >>> > if eval(test) >>> > block >>> > end >>> > end >>> > >>> > @cond VERSION >= v"0.4" begin >>> > # code with macros here >>> > end >>> > >>> > anyway, my questions are: (1) is the above sensible and (2) does this >>> > already exist? >>> > >>> > thanks, >>> > andrew >>> > >>> >>