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]>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]> > 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. >>>> >>>> >>> >>
