module Data.Array.Parallel.Prelude.Base.Tuple (
  tup2, tup3
) where

import Data.Array.Parallel.Lifted.Combinators
import Data.Array.Parallel.Lifted.Repr
import Data.Array.Parallel.Lifted.Closure
import Data.Array.Parallel.Lifted.PArray

tup2 :: PA a -> PA b -> a :-> b :-> (a,b)
{-# INLINE tup2 #-}
tup2 pa pb = closure2 pa (,) (zipPA# pa pb)

tup3 :: PA a -> PA b -> PA c -> a :-> b :-> c :-> (a,b,c)
{-# INLINE tup3 #-}
tup3 pa pb pc = closure3 pa pb (,,) (zip3PA# pa pb pc)