So, perhaps you're aware of this, but just in case: for things like Int64
and Int32, you can usually just define

myfunc(x::Integer)

and Julia will automatically create a specialized version of the function
for each int type you call it with.

There are cases where this is not what you want, of course, but overall
I find this rather nice (and I really only understood this recently).

Cheers, Kevin

On Tuesday, February 11, 2014, Fil Mackay <[email protected]> wrote:

> Thanks again for the reply.
>
> Another example to accepting a symbol is taking an integer, I choose (a
> somewhat arbitrary) type on my function call - say Int32. I then want to
> call it with an Int64. I *completely* agree with the "no automatic
> conversion"-ish-ness of Julia, but I want some syntax sugar to make
> explicit conversions easier :)
>
> myfunc(my64::Int32)
>
> # rather than
>
> myfunc(convert(Int32, my64))
>
> # seems easier, esp. when you have lots of args :)
>
> You'd probably need an operator other than "::" - a conversion operator
> like ":>"?
>
>
> On Wed, Feb 12, 2014 at 5:43 PM, Kevin Squire 
> <[email protected]<javascript:_e(%7B%7D,'cvml','[email protected]');>
> > wrote:
>
>> This is a pretty typical pattern for Julia, as you're finding. My
>> understanding is that this was a design choice: there are very few
>> automatic conversions between types in Julia, and if anything looks like it
>> was automatically converted, it was probably a side effect of multiple
>> dispatch on an abstract type or because of an extra definition like the one
>> I gave you.
>>
>> If you could be more explicit about the problem you're trying to solve,
>> you might get a better answer. There are ways people have gotten around
>> this, but only with certain patterns (e.g., wrapper types).
>>
>> Cheers, Kevin
>>
>>
>>
>> On Tuesday, February 11, 2014, Fil Mackay 
>> <[email protected]<javascript:_e(%7B%7D,'cvml','[email protected]');>>
>> wrote:
>>
>>> Thanks for the reply Kevin.
>>>
>>> Unfortunately this is a routine pattern that I'm hitting, I was hoping
>>> for a more general solution than adding a lot of extra overloads..
>>>
>>>
>>> On Wed, Feb 12, 2014 at 10:36 AM, Kevin Squire 
>>> <[email protected]>wrote:
>>>
>>>> Hi Fil,
>>>>
>>>> The way to do that in Julia is simply to define another version of the
>>>> function, which does the conversion and passes that on to the "main"
>>>> version of the function:
>>>>
>>>> test(str::String) = test(symbol(str))
>>>>
>>>> Cheers,
>>>>    Kevin
>>>>
>>>>
>>>> On Tue, Feb 11, 2014 at 3:30 PM, Fil Mackay 
>>>> <[email protected]>wrote:
>>>>
>>>>> Just wondering if there is an operator to easily perform known
>>>>> conversion. Say I have a function that takes a Symbol, and I want it to
>>>>> accept a String as well:
>>>>>
>>>>> function test(s::Symbol)
>>>>> end
>>>>>
>>>>> What I want to do is say, "yes I know this is not a Symbol - so please
>>>>> convert() it"
>>>>>
>>>>> mystr = "foo"
>>>>> test(mystr::Symbol)
>>>>>
>>>>> This would translate to:
>>>>>
>>>>> mystr = "foo"
>>>>> test(convert(Symbol, mystr))
>>>>>
>>>>> Is there any such operator? I would have thought doing this with the
>>>>> current type assert would make sense?
>>>>>
>>>>> Regards, Fil.
>>>>>
>>>>>
>>>>
>>>
>

Reply via email to