A code kata: n-dimensional arrays in Haskell