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