# Concatenated ranges

**URL:** <https://discourse.julialang.org/t/concatenated-ranges/126042>\
**Category:** General Usage\
**Tags:** range, abstractrange\
**Created:** [February 18, 2025, 6:58pm UTC](https://discourse.julialang.org/t/concatenated-ranges/126042 "2025-02-18T18:58:59Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![mcabbott](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mcabbott/32/6603_2.png) [@mcabbott](https://discourse.julialang.org/u/mcabbott)\
**Post date:** [February 19, 2025, 1:32pm UTC](https://discourse.julialang.org/t/concatenated-ranges/126042/7 "2025-02-19T13:32:54Z")

</div>

Yes this is certainly an AbstractArray.

Note that instead of concatenation, you can think of what `fftshift` does as a lazy `circshift`. The package [ShiftedArrays.jl](https://github.com/JuliaArrays/ShiftedArrays.jl) has wrappers for this, and it appears there was some attempt to make it work with CUDA.jl, see e.g. [this thread](https://discourse.julialang.org/t/efficient-cuarray-shift-rotation/86845). Although earlier discussion is about shifting an arbitrary vector, and there may be shortcuts possible if you only handle ranges.

---

_[View the full topic](https://discourse.julialang.org/t/concatenated-ranges/126042)._
