Numpy arrays on the other hand are awkward to use in custom algorithms because once the memory is reserved, you can't grow the array at either end.
Btw. you can grow them using hstack and vstack although I am not sure how efficient that is.
edit: if anyone knows a solution to this, please let me know...
I've rewritten someobject#[] plenty of times to have cleaner code.
Julia can inline through all the `getindex!` functions so you get the same performance as with a hand-coded C or Fortran array.
>> last_elem = arr[-1]
>> rev_arr = arr[::-1] # Reverse array
First thing that comes to mind is time-series data - like a sliding window based on some concept of "now" where indices can be offset by the current date/time. (e.g. timeSeries[0] == now, timeSeries[-1] == one second ago, timeSeries[1] == one second in the future, etc.)
I actually find these linear-algebra based languages even more mind-bending than functional based languages.
You're just using Object/map behavior, and if you're doing that with negative indices on an Array Object you're misusing it.