[Haskell] Eliminating Multiple-Array Bound Checking through Non-dependent types