Re: [julia-users] Re: calling sort on a range with rev=true

2016-05-07 Thread 'Greg Plowman' via julia-users

I think the problem here is that implementing sort(r::Range; 
rev::Bool=false), i.e. for keyword rev only, is that it would mean there is 
no definition for the other keyword arguments. Alternatively, if the other 
keywords were implemented for Range, then the method would not be 
type-stable. As Steven pointed out, sort(-5:5, by=abs) could not be 
represented by a Range.

Admittedly I was initially confused about dispatch with keyword 
arguments, and my understanding is still quite tenuous.
If what I'm saying makes sense then I don't think there is a case for 
filing an issue/PR?
 

On Friday, May 6, 2016 at 2:36:27 AM UTC+10, Milan Bouchet-Valat wrote:

> Le dimanche 01 mai 2016 à 19:11 -0700, 'Greg Plowman' via julia-users a 
> écrit : 
> > 
> > Extending/overwriting sort in range.jl (line 686) 
> > 
> > sort(r::Range) = issorted(r) ? r : reverse(r) 
> > 
> > with the following worked for me. 
> > 
> > function Base.sort(r::Range; rev::Bool=false) 
> > if rev 
> > issorted(r) ? reverse(r) : r 
> > else 
> > issorted(r) ? r : reverse(r) 
> > end 
> > end 
> Makes sense, please file an issue or a pull request (if the latter, be 
> sure to also add tests to prevent regressions). 
>
>
> Regards 
>


Re: [julia-users] Re: calling sort on a range with rev=true

2016-05-05 Thread Milan Bouchet-Valat
Le dimanche 01 mai 2016 à 19:11 -0700, 'Greg Plowman' via julia-users a
écrit :
> 
> Extending/overwriting sort in range.jl (line 686)
> 
> sort(r::Range) = issorted(r) ? r : reverse(r)
> 
> with the following worked for me.
> 
> function Base.sort(r::Range; rev::Bool=false)
>     if rev
>         issorted(r) ? reverse(r) : r
>     else
>         issorted(r) ? r : reverse(r)
>     end
> end
Makes sense, please file an issue or a pull request (if the latter, be
sure to also add tests to prevent regressions).


Regards


[julia-users] Re: calling sort on a range with rev=true

2016-05-01 Thread 'Greg Plowman' via julia-users

Extending/overwriting sort in range.jl (line 686)

sort(r::Range) = issorted(r) ? r : reverse(r)

with the following worked for me.

function Base.sort(r::Range; rev::Bool=false)
if rev
issorted(r) ? reverse(r) : r
else
issorted(r) ? r : reverse(r)
end
end