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 <[email protected]
> <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!
>>
>
>