When converting my script into a Module, some problems cropped up accessing 
the isna(...) function from DataArrays.

I managed to reduce the problem into a namespace resolution problem:
When using a Module inside a Module definition, the recursivity of name 
search is not working.
In the example below: isna(...) from DataArrays is not available to 
TestUsing after it issued a "using DataFrames".

The question is: Is this the behaviour we would/should want?

This is a simple demonstration of the issue:

module TestUsing

using DataFrames

function testisna1()
    isna(100)
end
function testisna2()
    DataArrays.isna(100)
end
function testisna3()
    DataFrames.DataArrays.isna(100)
end
end # Module TestUsing

and the interaction from the REPL:

   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "help()" to list help topics
  | | | | | | |/ _' |  |
  | | |_| | | | (_| |  |  Version 0.3.0-prerelease+2918 (2014-05-06 22:29 
UTC)
 _/ |\__'_|_|_|\__'_|  |  Commit 104568c (7 days old master)
|__/                   |  i686-linux-gnu

julia> 
julia> using TestUsing
Warning: New definition 
    isequal(NAtype,Any) at 
/home/dan/.julia/v0.3/DataArrays/src/operators.jl:556
is ambiguous with: 
    isequal(Any,WeakRef) at base.jl:114.
To fix, define 
    isequal(NAtype,WeakRef)
before the new definition.
Warning: New definition 
    isequal(Any,NAtype) at 
/home/dan/.julia/v0.3/DataArrays/src/operators.jl:557
is ambiguous with: 
    isequal(WeakRef,Any) at base.jl:113.
To fix, define 
    isequal(WeakRef,NAtype)
before the new definition.
Warning: ignoring conflicting import of StatsBase.range into DataFrames

julia> TestUsing.testisna()
ERROR: testisna not defined

julia> TestUsing.testisna2()
ERROR: DataArrays not defined
 in testisna2 at /home/dan/projects/julia-housing/TestUsing.jl:10

julia> TestUsing.testisna3()
false


Reply via email to