{-# LANGUAGE DeriveGeneric #-} module Ouroboros.Consensus.HardFork.Combinator.Util.Functors (Product2 (..)) where import GHC.Generics (Generic) data Product2 f g x y = Pair2 (f x y) (g x y) deriving (Product2 f g x y -> Product2 f g x y -> Bool (Product2 f g x y -> Product2 f g x y -> Bool) -> (Product2 f g x y -> Product2 f g x y -> Bool) -> Eq (Product2 f g x y) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall (f :: * -> * -> *) (g :: * -> * -> *) x y. (Eq (f x y), Eq (g x y)) => Product2 f g x y -> Product2 f g x y -> Bool /= :: Product2 f g x y -> Product2 f g x y -> Bool $c/= :: forall (f :: * -> * -> *) (g :: * -> * -> *) x y. (Eq (f x y), Eq (g x y)) => Product2 f g x y -> Product2 f g x y -> Bool == :: Product2 f g x y -> Product2 f g x y -> Bool $c== :: forall (f :: * -> * -> *) (g :: * -> * -> *) x y. (Eq (f x y), Eq (g x y)) => Product2 f g x y -> Product2 f g x y -> Bool Eq, (forall x. Product2 f g x y -> Rep (Product2 f g x y) x) -> (forall x. Rep (Product2 f g x y) x -> Product2 f g x y) -> Generic (Product2 f g x y) forall x. Rep (Product2 f g x y) x -> Product2 f g x y forall x. Product2 f g x y -> Rep (Product2 f g x y) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall (f :: * -> * -> *) (g :: * -> * -> *) x y x. Rep (Product2 f g x y) x -> Product2 f g x y forall (f :: * -> * -> *) (g :: * -> * -> *) x y x. Product2 f g x y -> Rep (Product2 f g x y) x $cto :: forall (f :: * -> * -> *) (g :: * -> * -> *) x y x. Rep (Product2 f g x y) x -> Product2 f g x y $cfrom :: forall (f :: * -> * -> *) (g :: * -> * -> *) x y x. Product2 f g x y -> Rep (Product2 f g x y) x Generic, Int -> Product2 f g x y -> ShowS [Product2 f g x y] -> ShowS Product2 f g x y -> String (Int -> Product2 f g x y -> ShowS) -> (Product2 f g x y -> String) -> ([Product2 f g x y] -> ShowS) -> Show (Product2 f g x y) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall (f :: * -> * -> *) (g :: * -> * -> *) x y. (Show (f x y), Show (g x y)) => Int -> Product2 f g x y -> ShowS forall (f :: * -> * -> *) (g :: * -> * -> *) x y. (Show (f x y), Show (g x y)) => [Product2 f g x y] -> ShowS forall (f :: * -> * -> *) (g :: * -> * -> *) x y. (Show (f x y), Show (g x y)) => Product2 f g x y -> String showList :: [Product2 f g x y] -> ShowS $cshowList :: forall (f :: * -> * -> *) (g :: * -> * -> *) x y. (Show (f x y), Show (g x y)) => [Product2 f g x y] -> ShowS show :: Product2 f g x y -> String $cshow :: forall (f :: * -> * -> *) (g :: * -> * -> *) x y. (Show (f x y), Show (g x y)) => Product2 f g x y -> String showsPrec :: Int -> Product2 f g x y -> ShowS $cshowsPrec :: forall (f :: * -> * -> *) (g :: * -> * -> *) x y. (Show (f x y), Show (g x y)) => Int -> Product2 f g x y -> ShowS Show)