[Haskell-cafe] Cyclic indexing (Was: naturally, length :: a -> Int)
Henning Thielemann
lemming at henning-thielemann.de
Sun Mar 14 08:23:04 UTC 2021
On Thu, 4 Mar 2021, Ben Franksen wrote:
> If we do embrace that viewpoint, then I'd say we should go all the way
> and interpret indices modulo (non-negative) structure size! This makes
> (safe) indexing total (for non-empty structures) and allows things like
> xs !! (-1) == last xs as in Perl and some other languages. Unsafe
> indexing (as in the vector package) could remain as is for performance
> critical code.
This seems to be the MatLab way of solving problems: Just don't talk about
them anymore. :-)
However, I had the idea of adding a Cyclic shape to my array library:
http://hackage.haskell.org/package/comfort-array-0.4/docs/Data-Array-Comfort-Shape.html
In comfort-array I use distinct types for the array shape and its indices,
where the index type is a type function of the shape type. I had the plan
to add a Cyclic shape type in order to better support the Discrete Fourier
Transform. A DFT actually transforms a cyclic signal to a cyclic frequency
spectrum. This means, a Fourier transform library like fftw would still
transform an array with indices from 0 to n-1, but you can access the
frequency (-1) with index (-1) although it is stored at index (n-1).
More information about the Haskell-Cafe
mailing list