module LinearScan.Tuple where


import Debug.Trace (trace, traceShow, traceShowId)
import qualified Prelude
import qualified Data.IntMap
import qualified Data.IntSet
import qualified Data.List
import qualified Data.Ord
import qualified Data.Functor.Identity
import qualified Hask.Utils


first :: (a1 -> a2) -> ((,) a1 a3) -> (,) a2 a3
first f x =
  case x of {
   (,) a z -> (,) (f a) z}

curry :: (a1 -> a2 -> a3) -> ((,) a1 a2) -> a3
curry f x =
  case x of {
   (,) a b -> f a b}