Hey Stefan,

Actually, I did not import these functions, nor did I try extending 
Base.{convert,promote_rule} versions.

Following purely the documentation, one cannot understand easily whether 
they should extend them, or not.
Sorry for being dumb --- extending Base. versions solved my issue. But as 
`ggggg` says, this is not trivial
at first try.

And, as for your comment, Lutfullah Tomak, I can say I cannot notice that 
there is only one method due to
one reason. If you type `?promote_rule` in repl to see how it works, repl 
gives you the correct function without
any `Base.` preceding the function's name. Then, if you run 
`methods(promote_rule)` prior to extending this
function, you see again a list of `promote_rule`s which are already defined 
in Julia. Finally, you assume (at
least I assumed) that it is the very `promote_rule` function you need to 
extend, not `Base.promote_rule`.

The same applies to `convert`. 

On Tuesday, May 3, 2016 at 7:31:56 PM UTC+2, Stefan Karpinski wrote:
>
> Did you import the convert and promote_rule functions?
>
> On Tue, May 3, 2016 at 12:21 PM, Arda Aytekin <ardaa...@gmail.com 
> <javascript:>> wrote:
>
>> Hey,
>>
>> I am sorry if this question is either irrelevant or stupid, but I am 
>> having problems figuring out the type promotion and conversions.
>> Could you please explain to me why the below code excerpt is not giving 
>> me what I want it to return:
>>
>> abstract A;
>>
>> immutable A1 <: A
>>     num::Float64
>> end;
>>
>> immutable A2 <: A
>>     num::Int64
>> end;
>>
>> # conversion
>> A1(a::A2) = A1(a.num);
>> convert(::Type{A1}, a::A2) = A1(a);
>>
>> # promotion
>> promote_rule(::Type{A1}, ::Type{A2}) = A1;
>>
>> a1 = A1(1.);
>> a2 = A2(2);
>>
>> promote(a1,a2)
>> julia> (A1(1.0),A2(2))
>>
>> Why can I not get `(A1(1.0),A1(2.0))` for example, although the 
>> `convert(::Type{A1}, a::A2)` method and the `A1(a::A2)` constructor
>> are working properly. Or, am I missing something?
>>
>> I tried to follow the promotion and conversion section of documentation 
>> <http://julia.readthedocs.org/>; however, I have not been successful so 
>> far.
>>
>> Thanks!
>>
>
>

Reply via email to