0.5 should have generators, so I assume that it will be the preferred way to write a dict comprehension
https://github.com/JuliaLang/julia/pull/14782 On Saturday, April 2, 2016 at 8:59:01 AM UTC-4, Tamas Papp wrote: > > On Sat, Apr 02 2016, Yichao Yu wrote: > > > On Sat, Apr 2, 2016 at 8:35 AM, Tamas Papp <[email protected] > <javascript:>> wrote: > >> On Sat, Apr 02 2016, Yichao Yu wrote: > >> > >>> On Sat, Apr 2, 2016 at 2:28 AM, Tamas Papp <[email protected] > <javascript:>> wrote: > >>>> On Fri, Apr 01 2016, Yichao Yu wrote: > >>>> > >>>>> On Fri, Apr 1, 2016 at 5:33 AM, Tamas Papp <[email protected] > <javascript:>> wrote: > >>>>>> Hi, > >>>>>> > >>>>>> I ran into a problem with the result type of Dict comprehensions. > If I > >>>>>> wrap the comprehension in a function, it produces the narrowest > type, > >>>>>> otherwise the type of value is Any. Code looks like this: > >>>>> > >>>>> https://github.com/JuliaLang/julia/issues/7258 > >>>> > >>>> Sorry, I don't understand why it is the same issue. The type of > >>>> arguments in the comprehension is always the same, just that one > version > >>>> is wrapped in a function inside a function, and the other one isn't. > >>> > >>> And that's exactly where type inference sensitivity comes in. One of > >>> them is inferable and the other not. > >> > >> Thanks, now I think I get it. So for the time being, is wrapping > >> something in a function to make it inferable a reasonable general > >> workaround? > >> > > > > Depend on what you need. If it works than sure. > > Supplying the type manually also works, if you can easily determine it > > of course. > > Rereading #7258 I convinced myself that I should supply the type > manually. Two questions: > > 1. Is Dict{keytype,valuetype}([...my comprehension...]) the preferred > syntax, that will survive to 0.5? > > 2. If I am computing the type of A/B and I know that their types are > TypeA and TypeB, what's the preferred way of computing the result type? > I came up with > > typeof(one(TypeA)/one(TypeB)) > > but maybe there is something more elegant. > > Best, > > Tamas >
