There's no clean solution to this. In general, I'd argue that we should stop 
exporting so many names and encourage people to use qualified names much more 
often than we do right now.

But for important abstractions, we can put them into StatsBase, which all stats 
packages should be derived from.

 -- John

On Dec 2, 2014, at 4:34 PM, Rob J. Goedman <goed...@icloud.com> wrote:

> I’ll try to give an example of my problem based on how I’ve seen it occur in 
> Stan.jl and Jags.jl.
> 
> Both DataFrames.jl and Mamba.jl export describe(). Stan.jl relies on Mamba, 
> but neither Stan or Mamba need DataFrames. So DataFrames is not imported by 
> default.
> 
> Recently someone used Stan and wanted to read in a .csv file and added 
> DataFrames to the using clause in the script, i.e.
> 
> ```
> using Gadfly, Stan, Mamba, DataFrames
> ```
> 
> After running a simulation, Mamba’s describe(::Mamba.Chains) could no longer 
> be found.
> 
> I wonder if someone can point me in the right direction how best to solve 
> these kind of problems (for end users):
> 
> 1. One way around it is to always qualify describe(), e.g. Mamba.describe().
> 2. Use isdefined(Main, :DataFrames) to upfront test for such a collision.
> 3. Suggest to end users to import DataFrames and qualify e.g. 
> DataFrames.readtable().
> 4. ?
> 
> Thanks and regards,
> Rob J. Goedman
> goed...@mac.com
> 
> 
> 
> 
> 

Reply via email to