map/reduce style run with monoidal reduce
NOCOMPILE: Parametrizing on array and arrow type.
Taking a new approach where grid is split into two levels of class. The first
level allows the use of indexC. The next level is split into 1D, 2D and 3D and
allows index1D.. and unsafeIndex1d.. This allows us to change implementation
just by using different constructors on the stencils (none for CPU but `Arr` for
GPU). I also preserves the comonadic nature of things quite well.
Added the 2D case for CPU
grid zipping added and refactoring
removed old type-level functions not used anymore
unzipping grids
merge
Merge: had to remove functions from testing/Combinators.hs
It compiles! This is the approach where Arr takes 3 instead of 2 arguments. Now just need to implement undefined things.
No need for the extra mirror' function.
Added undefined for the index functions.
Removed the argument g from arr. This is fine seeing as g is completely specifies the arr anyway.
It is the arr that specifies the g and not the other way round.
Introduced a type class to allow constructing and destructing grids of different types.
Replaced CPU test with new method and a run harness. This needs to be extended to GPU but first we need an instance of GridList for GPU grids.
Added instance of GridList for GPU.
This conversion approach has failed because we also need the boundaries to be of
type (Exp y) and not `y`. I don't have the time to implement the required
changes to this so I will return to the compilation approach using data
constructors.
Needed very little work to convert back to the compile-time approach. Shame about those comonads!
Disabled the test against Accelerate as it doesn't take into account boundaries
so it cannot work.