{-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-missing-import-lists #-} module Tuple2(mapFst, mapSnd, mapAll2, mapEach2, mapFstF, mapSndF, tuple2To3a, tuple2To3b, tuple2To3c) where import External (<&>) :: Functor f => f a -> (a -> b) -> f b (<&>) = flip fmap mapFst :: (a -> x) -> (a, b) -> (x, b) mapFst f (a, b) = (f a, b) mapSnd :: (b -> x) -> (a, b) -> (a, x) mapSnd f (a, b) = (a, f b) mapAll2 :: (a -> x) -> (a, a) -> (x, x) mapAll2 f (a, b) = (f a, f b) mapEach2 :: (a -> x) -> (b -> y) -> (a, b) -> (x, y) mapEach2 f g (a, b) = (f a, g b) mapFstF :: Functor f => (a -> f x) -> (a, b) -> f (x, b) mapFstF f (a, b) = (f a) <&> (\x -> (x, b)) mapSndF :: Functor f => (b -> f x) -> (a, b) -> f (a, x) mapSndF f (a, b) = (f b) <&> (\x -> (a, x)) tuple2To3a :: (a, b) -> x -> (x, a, b) tuple2To3a (a, b) x = (x, a, b) tuple2To3b :: (a, b) -> x -> (a, x, b) tuple2To3b (a, b) x = (a, x, b) tuple2To3c :: (a, b) -> x -> (a, b, x) tuple2To3c (a, b) x = (a, b, x)