map :: (A.Slice sh,Shape sh,Elt a,Elt b)
    => (A.Exp a -> A.Exp b) -> A.Acc (Array (sh A.:. Int) a) -> TuneM (A.Acc (Array (sh A.:. Int) b))
map f arr = do
  (a1, a2) <- split arr
  let m1 = A.map f a1
      m2 = A.map f a2
  concat m1 m2
map :: (A.Slice sh,Shape sh,Elt a,Elt b)
    => (A.Exp a -> A.Exp b) -> A.Acc (Array (sh A.:. Int) a) -> TuneM (A.Acc (Array (sh A.:. Int) b))
map f arr = do
  (a1, a2) <- split arr
  let m1 = A.map f a1
      m2 = A.map f a2
  concat m1 m2
map f arr = do
  (a1, a2) <- split arr
  let m1 = A.map f a1
      m2 = A.map f a2
  concat m1 m2