Now, that said, proofs. Regarding how it affects package developers, most users 
simply have no clue that using scoped names would solve their problems:

  * 
[https://github.com/timholy/Images.jl/issues/141](https://github.com/timholy/Images.jl/issues/141)
  * 
[https://github.com/JuliaStats/StatsBase.jl/issues/208](https://github.com/JuliaStats/StatsBase.jl/issues/208)
  * 
[https://github.com/MichaelHatherly/Docile.jl/issues/79](https://github.com/MichaelHatherly/Docile.jl/issues/79)
  * 
[http://stackoverflow.com/questions/37926690/qualifying-confilicting-functions-in-julia](http://stackoverflow.com/questions/37926690/qualifying-confilicting-functions-in-julia)
  * 
[https://groups.google.com/forum/#!msg/julia-users/9XJX3CJrq10/KpR_K3UICAAJ](https://groups.google.com/forum/#!msg/julia-users/9XJX3CJrq10/KpR_K3UICAAJ)
  * 
[http://finance-opt-tools.readthedocs.io/en/latest/tut/solversel.html](http://finance-opt-tools.readthedocs.io/en/latest/tut/solversel.html)
  * 
[https://github.com/JuliaStats/DataFrames.jl/issues/877](https://github.com/JuliaStats/DataFrames.jl/issues/877)
  * 
[https://github.com/JuliaStats/DataArrays.jl/issues/168](https://github.com/JuliaStats/DataArrays.jl/issues/168)
  * 
[https://github.com/JuliaLang/julia/issues/15965](https://github.com/JuliaLang/julia/issues/15965)
  * 
[https://github.com/JuliaLang/julia/issues/19116](https://github.com/JuliaLang/julia/issues/19116)
  * 
[https://github.com/JuliaStats/DataFrames.jl/issues/1003](https://github.com/JuliaStats/DataFrames.jl/issues/1003)
  * 
[https://github.com/JuliaStats/DataFrames.jl/issues/1094](https://github.com/JuliaStats/DataFrames.jl/issues/1094)
  * 
[https://github.com/JuliaStats/DataFrames.jl/pull/929](https://github.com/JuliaStats/DataFrames.jl/pull/929)
  * 
[https://github.com/MikeInnes/Lazy.jl/issues/9](https://github.com/MikeInnes/Lazy.jl/issues/9)
  * 
[https://github.com/MikeInnes/Lazy.jl/issues/27](https://github.com/MikeInnes/Lazy.jl/issues/27)
  * 
[https://github.com/JuliaML/Roadmap.jl/issues/8](https://github.com/JuliaML/Roadmap.jl/issues/8)
 (end)



Or even if they do, such warnings **are** considered bugs by developers and are 
therefore "fixed" by resorting to different methods (look at these pages if you 
are not convinced)... prefixing, opening bug reports on other developer's 
package, renaming or even not exporting:

> Let's just not export them, then people can call Lazy.cycle etc. if they need 
> it.

Prefixing for instance is quite common, e.g. (and I can assure you that this is 
only a minute sample, look for "export"-ed function names):

  * 
[https://github.com/JuliaCloud/AWS.jl/blob/master/src/AWS.jl](https://github.com/JuliaCloud/AWS.jl/blob/master/src/AWS.jl)
  * 
[https://github.com/JuliaPackaging/Git.jl/blob/master/src/Git.jl](https://github.com/JuliaPackaging/Git.jl/blob/master/src/Git.jl)
  * 
[https://github.com/JuliaIO/GZip.jl/blob/master/src/GZip.jl](https://github.com/JuliaIO/GZip.jl/blob/master/src/GZip.jl)
  * 
[https://github.com/yuyichao/LibArchive.jl/blob/master/src/LibArchive.jl](https://github.com/yuyichao/LibArchive.jl/blob/master/src/LibArchive.jl)
  * 
[https://github.com/simonster/MAT.jl/blob/master/src/MAT.jl](https://github.com/simonster/MAT.jl/blob/master/src/MAT.jl)
  * 
[https://github.com/randyzwitch/OAuth.jl/blob/master/src/OAuth.jl](https://github.com/randyzwitch/OAuth.jl/blob/master/src/OAuth.jl)
  * 
[https://github.com/bnewbold/PyX.jl/blob/master/src/PyX.jl](https://github.com/bnewbold/PyX.jl/blob/master/src/PyX.jl)
  * 
[https://github.com/bastibe/WAV.jl/blob/master/src/WAV.jl](https://github.com/bastibe/WAV.jl/blob/master/src/WAV.jl)



Is really wavread that much better than wav.read? For a Nimean (or whatever), 
the answer is most certainly "no" as wavread, wavRead and wav_read (to cite a 
few) are already considered identical in Nim. So, if one is ready to write 
wavread or wav_read, why not wav.read? Namespace prefixing has also another 
advantage: if all the functions are defined as wave_file_codec_* 
(wave_file_codec_read, wave_file_codec_write, ...), one would have to write a 
custom macro to rename them to something sane whereas a WaveFileCodec module 
can always be trivially renamed wav (wav.read, wav.write, ...).

But all that said putting namespaces everywhere, especially in small or 
"well-designed" programs, brings very little value with regard to the potential 
increase in verbosity.

And unfortunately I have no straightforward solution either.

Reply via email to