@@ -27,9 +27,9 @@ macro implement_array_methods(t)
27
27
return $ _copyto! (dest, src)
28
28
end
29
29
30
- Base. reverse (a:: $t , dims= :) = $ _reverse (a, dims)
31
- # For ambiguity
32
- Base. reverse (a:: $t{<:Any,1} , dims :: Integer ) = $ _reverse (a, dims )
30
+ Base. reverse (a:: $t ; dims= :) = $ _reverse (a, dims)
31
+ Base . reverse (a :: $t{<:Any,1} ) = $ _reverse1 (a)
32
+ Base. reverse (a:: $t{<:Any,1} , start :: Integer , stop :: Integer = lastindex (a)) = $ _reverse1 (a, start, stop )
33
33
34
34
# Here we extend the unexported `_replace` method, but we replicate
35
35
# much less Base functionality by extending it rather than `replace`.
64
64
_copyto! (dest, Rdest, src, Rsrc) = view (dest, Rdest) .= view (src, Rsrc)
65
65
66
66
# Use a view for lazy reverse
67
- _reverse (a, dims :: Colon ) = _reverse (a, ntuple (identity, ndims (a)))
67
+ _reverse (a, :: Colon ) = _reverse (a, ntuple (identity, ndims (a)))
68
68
_reverse (a, dims:: Int ) = _reverse (a, (dims,))
69
69
function _reverse (A, dims:: Tuple )
70
70
rev_axes = map (ntuple (identity, ndims (A)), axes (A)) do d, a
@@ -73,6 +73,12 @@ function _reverse(A, dims::Tuple)
73
73
end
74
74
return view (A, rev_axes... )
75
75
end
76
+ _reverse1 (a) = _reverse (a, 1 )
77
+ function _reverse1 (a, start:: Int , stop:: Int )
78
+ inds = [firstindex (a): start- 1 ; stop: - 1 : start; stop+ 1 : lastindex (a)]
79
+ @show inds
80
+ return view (a, inds)
81
+ end
76
82
77
83
# Use broadcast instead of a loop.
78
84
# The `count` argument is disallowed as broadcast is not sequential.
0 commit comments