Since you haven't explicitly imported MyType.bar, when you defined bar again, it created a new, unrelated function Main.bar, rather than merging them
On Friday, August 1, 2014, Dustin Lee <[email protected]> wrote: > Given two files: > > SomeLibrary.jl > =============== > module SomeLibrary > > export MyType, foo, bar > > abstract MyType > > function bar(mt::MyType) > println("I'm in MyType/bar") > mt.x * 3 > end > > function foo(mt::MyType) > bar(mt) + 1 > end > > end > > > main_program.jl > =============== > > using SomeLibrary > > type NewType <: MyType > x > end > > function bar(nt::NewType) > println("I'm in NewType/bar") > nt.x * 2 > end > > println(foo(NewType(10))) > > > > > When running main_program.jl I'd expect: > > I'm in NewType/bar > > But instead I get > > I'm in MyType/bar > > So I guess my expectations are a little messed up. I'm hoping someone can > help me think through the logic of scoping here. > > Why isn't the more specific type function being used? > > I'm on Julia 0.3. > > thanks > >
