Thanks. Maybe it's time to upgrade...
On Thursday, June 2, 2016 at 8:53:12 AM UTC-4, Yichao Yu wrote: > > On Thu, Jun 2, 2016 at 8:37 AM, Cedric St-Jean <cedric...@gmail.com > <javascript:>> wrote: > > I have two very similar functions that differ in only which function > they > > call > > > > function search_suspects_forward(...) > > ... > > searchsortedfirst(...) > > end > > > > function search_suspects_backward(...) > > ... > > searchsortedlast(...) > > end > > > > function foo() > > search_suspects_forward(...) > > end > > > > Naturally, I'd like to refactor the common code > > > > function search_suspects(..., search_fun::Function) > > ... > > search_fun(...) > > end > > > > search_suspects_foward(...) = search_suspects(..., searchsortedfirst) > > ... > > > > But Julia doesn't specialize search_suspects based on search_fun (at > least > > on 0.4), which is a missed optimization opportunity. Is there any way to > do > > that? I could turn `search_fun` into a functor, but that kinda sucks (is > > there a way to do that automatically?) If I understand inlining > heuristics > > correctly, I would expect that `search_suspects_forward`, being a short > > function, will be inlined into `foo`, but what I want is for > > `search_suspects` to be inlined into `search_suspects_forward`. Are > there > > ways of communicating that to the compiler? Is there a @notinline? > > Functor is the only way on 0.4. This is done automatically on 0.5. >