Ah, I saw this topic in the digest, but didn't understand it is about name shadowing. Thanks and sorry for inconvenience.
On Tuesday, April 28, 2015 at 1:06:45 AM UTC+3, Stefan Karpinski wrote: > > https://groups.google.com/forum/#!topic/julia-users/sk8Gxq7ws3w > > On Mon, Apr 27, 2015 at 5:42 PM, Andrei Zh <[email protected] > <javascript:>> wrote: > >> Let's say, we have 2 modules: >> >> module A >> export foo >> foo(n::Int) = println("A") >> end >> >> >> module B >> export foo >> foo(s::String) = println("B") >> end >> >> and then in REPL: >> >> julia> using A >> julia> using B >> !julia> methods(foo) >> # 1 method for generic function "foo": >> >> >> foo(s::String) at /home/<user>/.julia/v0.3/B/src/B.jl:4 >> >> so method `A.foo` is shadowed. But at the same time purely in REPL or >> single module: >> >> julia> bar(x::Int) = println("#1") >> bar (generic function with 1 method) >> >> >> julia> bar(s::String) = println("#2") >> bar (generic function with 2 methods) >> >> >> !julia> methods(bar) >> # 2 methods for generic function "bar": >> >> >> bar(x::Int64) at none:1 >> bar(s::String) at none:1 >> >> Methods are added to a function. >> >> My question is what is the idea behind this behavior and what to do if >> `A` and `B` are 2 independent modules, having same method `foo` by >> coincidence (expect for using qualified names, of course)? >> >> >> >> >> >
