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