module UU.Util.Utils where newtype Id x = Id x cross :: (a->c) -> (b->d) -> (a,b) -> (c,d) cross :: forall a c b d. (a -> c) -> (b -> d) -> (a, b) -> (c, d) cross a -> c f b -> d g (a x,b y) = (a -> c f a x, b -> d g b y) split :: (a->b) -> (a->c) -> a -> (b,c) split :: forall a b c. (a -> b) -> (a -> c) -> a -> (b, c) split a -> b f a -> c g a x = (a -> b f a x,a -> c g a x) fst3 :: (a,b,c) -> a fst3 :: forall a b c. (a, b, c) -> a fst3 (a a,b _,c _) = a a snd3 :: (a,b,c) -> b snd3 :: forall a b c. (a, b, c) -> b snd3 (a _,b b,c _) = b b thd3 :: (a,b,c) -> c thd3 :: forall a b c. (a, b, c) -> c thd3 (a _,b _,c c) = c c