Re:Quick Overview of Julia language [pdf]
by Jtsummers on Sunday January 10, 2021 @09:49PM
(#25723753)
Somehow I missed this comment. But as michaelcampbell wrote, in Ada you'd select the range that made sense for your application.
So if your application makes sense with 0-based (time series in your example) then you can do it:
Cash_Flows : array (0..max_time) of Double;
It may even make sense to go negative for some things. For instance: Object_at_Altitude : array (-100..1000) of Object;
Or characters: Selected_Answers : array (range 'a'..'z') of Boolean;
Or a type that you've created: type Color is Red, Green, Blue, Yellow, Orange;
Histogram_of_Colors : array (Color'Range) of Natural;
But a particularly nice thing is that arrays in Ada, unlike C, don't lose their size, so you can always do: for I in Cash_Flows'Range loop
Some_Function(Cash_Flows(I));
end loop;
So really the index never even has to be directly touched or known after creation.
Re:Quick Overview of Julia language [pdf]
by mcabbott on Monday January 11, 2021 @05:26AM
(#25727027)
The Julia translations of these might look as follows:
using OffsetArrays
cash_flows = zeros(0:max_time)
altitude = zeros(Bool, -100:100)
for I in eachindex(cash_flows)
some_function(cash_flows[I])
end
# or in this case avoiding indexing:
for cf in cash_flows
some_function(cf)
end
foreach(some_function, cash_flows)
OffsetArrays is not quite a standard library but it's close. A lot of library code will work like this, calling `eachindex` or `axes` so as to be indifferent to how the arrays are indexed, and to pass this behaviour through to outputs as appropriate.
Re:Quick Overview of Julia language [pdf]
by Jtsummers on Monday January 11, 2021 @10:55AM
(#25730583)
Thanks. I'll be taking a look a that for my code. I probably won't use this extensively, but it is a feature I have found useful in Ada (though I'm only a hobbyist, I gave up on convincing work to use it). I'm still a novice with Julia, but I'm doing some math heavy code and started exploring it for its relative ease of use (REPL, fast execution after compilation, ergonomics-focused language design).
Re:Quick Overview of Julia language [pdf]
by michaelcampbell on Sunday January 10, 2021 @09:38PM
(#25723653)
> I haven't encountered a code base that uses non-default array indices,
If you're referring to <parent>'s mention of Ada with arbitrary ranges of indices, that's less about thinking of them as array indices and more of "a range of indices that make sense for your domain". Thinking about your problem in your problem's space rather than "how would my computer think of this"; making the map more like the territory, as it were.
I haven't encountered a code base that uses non-default array indices, but it sounds like a serious anti-pattern, especially if you're just changing from 1-based to 0-based.