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}