Thanks Jameson and Spencer!   That's exactly what I was looking for.

On Friday, August 1, 2014 1:09:42 PM UTC-6, Jameson wrote:
>
> import SomeLibrary.bar
>
> Or
>
> SomeLibrary.bar(...) = ...
>
> On Friday, August 1, 2014, Dustin Lee <[email protected] <javascript:>> 
> wrote:
>
>> So 
>>
>> export MyType, foo, bar
>>
>> and 
>>
>> using SomeLibrary 
>>
>> is not enough?
>>
>> How do I change it to be more specific?
>>
>>
>> On Fri, Aug 1, 2014 at 12:50 PM, Jameson Nash <[email protected]> wrote:
>>
>>> 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
>>>>
>>>>
>>
>>
>> -- 
>> Dustin Lee
>> qhfgva=rot13(dustin) 
>>
>

Reply via email to