This looks interesting but I'd want to give the user the option of turning 
parallelization on and off at will. Not sure this will do it.

On Sunday, September 13, 2015 at 5:59:37 PM UTC-7, andrew cooke wrote:
>
>
> the following works..
>
> first, defining module AB:
>
> module A
> export foo
> foo() = println("a")
> end
>
> module B
> export foo
> foo() = println("b")
> end
>
> module AB
> if Main.USE_A
>     using A
> else
>     using B
> end
> export foo
> end
>
> that depends on Main.USE_A, where Main is the initial module when things 
> start up,  so then you can do:
>
> USE_A = true
>
> include("ab.jl")
>
> using AB
> foo()
>
> which prints "a".
>
> no idea if this is considered kosher...
>
> andrew
>
>
>
>
> On Sunday, 13 September 2015 21:45:57 UTC-3, andrew cooke wrote:
>>
>>
>> i don't know of a good way to do this.
>>
>> really, parameterised modules would be great.
>>
>> the simplest thing i can think of is if modules are first class and using 
>> etal can take an expression, but the following doesn't run:
>>
>> module A
>> foo() = println("a")
>> end
>>
>> module B
>> foo() = println("b")
>> end
>>
>> module AB
>> m(x) = x ? A : B
>> end
>>
>> using AB
>> using m(true)
>> foo()  # wouldn't it be nice if this printed "a"?
>>
>> andrew
>>
>>
>> On Sunday, 13 September 2015 19:33:16 UTC-3, Seth wrote:
>>>
>>> Hi all,
>>>
>>> I'd like to track a setting throughout my module (that will cause the 
>>> [transparent] dispatch of either single-threaded or parallel versions of 
>>> many different functions). Is there a more Julian way of doing the 
>>> following? This seems inelegant:
>>>
>>> _parallel = false    # start off without parallelism - user calls 
>>> parallelize() to set/unset.
>>>
>>> function parallelize(p::Bool=true)
>>>     global _parallel = p
>>> end
>>>
>>>
>>> function foo(a::Int) # there will be many functions like this
>>>   if _parallel
>>>      _foo_parallel(a)
>>>   else
>>>     _foo_singlethread(a)
>>>   end
>>> end
>>>
>>>

Reply via email to