module Unison.Merge.TwoOrThreeWay ( TwoOrThreeWay (..), ) where import Unison.Prelude data TwoOrThreeWay a = TwoOrThreeWay { forall a. TwoOrThreeWay a -> Maybe a lca :: Maybe a, forall a. TwoOrThreeWay a -> a alice :: a, forall a. TwoOrThreeWay a -> a bob :: a } deriving stock ((forall m. Monoid m => TwoOrThreeWay m -> m) -> (forall m a. Monoid m => (a -> m) -> TwoOrThreeWay a -> m) -> (forall m a. Monoid m => (a -> m) -> TwoOrThreeWay a -> m) -> (forall a b. (a -> b -> b) -> b -> TwoOrThreeWay a -> b) -> (forall a b. (a -> b -> b) -> b -> TwoOrThreeWay a -> b) -> (forall b a. (b -> a -> b) -> b -> TwoOrThreeWay a -> b) -> (forall b a. (b -> a -> b) -> b -> TwoOrThreeWay a -> b) -> (forall a. (a -> a -> a) -> TwoOrThreeWay a -> a) -> (forall a. (a -> a -> a) -> TwoOrThreeWay a -> a) -> (forall a. TwoOrThreeWay a -> [a]) -> (forall a. TwoOrThreeWay a -> Bool) -> (forall a. TwoOrThreeWay a -> Int) -> (forall a. Eq a => a -> TwoOrThreeWay a -> Bool) -> (forall a. Ord a => TwoOrThreeWay a -> a) -> (forall a. Ord a => TwoOrThreeWay a -> a) -> (forall a. Num a => TwoOrThreeWay a -> a) -> (forall a. Num a => TwoOrThreeWay a -> a) -> Foldable TwoOrThreeWay forall a. Eq a => a -> TwoOrThreeWay a -> Bool forall a. Num a => TwoOrThreeWay a -> a forall a. Ord a => TwoOrThreeWay a -> a forall m. Monoid m => TwoOrThreeWay m -> m forall a. TwoOrThreeWay a -> Bool forall a. TwoOrThreeWay a -> Int forall a. TwoOrThreeWay a -> [a] forall a. (a -> a -> a) -> TwoOrThreeWay a -> a forall m a. Monoid m => (a -> m) -> TwoOrThreeWay a -> m forall b a. (b -> a -> b) -> b -> TwoOrThreeWay a -> b forall a b. (a -> b -> b) -> b -> TwoOrThreeWay a -> b forall (t :: * -> *). (forall m. Monoid m => t m -> m) -> (forall m a. Monoid m => (a -> m) -> t a -> m) -> (forall m a. Monoid m => (a -> m) -> t a -> m) -> (forall a b. (a -> b -> b) -> b -> t a -> b) -> (forall a b. (a -> b -> b) -> b -> t a -> b) -> (forall b a. (b -> a -> b) -> b -> t a -> b) -> (forall b a. (b -> a -> b) -> b -> t a -> b) -> (forall a. (a -> a -> a) -> t a -> a) -> (forall a. (a -> a -> a) -> t a -> a) -> (forall a. t a -> [a]) -> (forall a. t a -> Bool) -> (forall a. t a -> Int) -> (forall a. Eq a => a -> t a -> Bool) -> (forall a. Ord a => t a -> a) -> (forall a. Ord a => t a -> a) -> (forall a. Num a => t a -> a) -> (forall a. Num a => t a -> a) -> Foldable t $cfold :: forall m. Monoid m => TwoOrThreeWay m -> m fold :: forall m. Monoid m => TwoOrThreeWay m -> m $cfoldMap :: forall m a. Monoid m => (a -> m) -> TwoOrThreeWay a -> m foldMap :: forall m a. Monoid m => (a -> m) -> TwoOrThreeWay a -> m $cfoldMap' :: forall m a. Monoid m => (a -> m) -> TwoOrThreeWay a -> m foldMap' :: forall m a. Monoid m => (a -> m) -> TwoOrThreeWay a -> m $cfoldr :: forall a b. (a -> b -> b) -> b -> TwoOrThreeWay a -> b foldr :: forall a b. (a -> b -> b) -> b -> TwoOrThreeWay a -> b $cfoldr' :: forall a b. (a -> b -> b) -> b -> TwoOrThreeWay a -> b foldr' :: forall a b. (a -> b -> b) -> b -> TwoOrThreeWay a -> b $cfoldl :: forall b a. (b -> a -> b) -> b -> TwoOrThreeWay a -> b foldl :: forall b a. (b -> a -> b) -> b -> TwoOrThreeWay a -> b $cfoldl' :: forall b a. (b -> a -> b) -> b -> TwoOrThreeWay a -> b foldl' :: forall b a. (b -> a -> b) -> b -> TwoOrThreeWay a -> b $cfoldr1 :: forall a. (a -> a -> a) -> TwoOrThreeWay a -> a foldr1 :: forall a. (a -> a -> a) -> TwoOrThreeWay a -> a $cfoldl1 :: forall a. (a -> a -> a) -> TwoOrThreeWay a -> a foldl1 :: forall a. (a -> a -> a) -> TwoOrThreeWay a -> a $ctoList :: forall a. TwoOrThreeWay a -> [a] toList :: forall a. TwoOrThreeWay a -> [a] $cnull :: forall a. TwoOrThreeWay a -> Bool null :: forall a. TwoOrThreeWay a -> Bool $clength :: forall a. TwoOrThreeWay a -> Int length :: forall a. TwoOrThreeWay a -> Int $celem :: forall a. Eq a => a -> TwoOrThreeWay a -> Bool elem :: forall a. Eq a => a -> TwoOrThreeWay a -> Bool $cmaximum :: forall a. Ord a => TwoOrThreeWay a -> a maximum :: forall a. Ord a => TwoOrThreeWay a -> a $cminimum :: forall a. Ord a => TwoOrThreeWay a -> a minimum :: forall a. Ord a => TwoOrThreeWay a -> a $csum :: forall a. Num a => TwoOrThreeWay a -> a sum :: forall a. Num a => TwoOrThreeWay a -> a $cproduct :: forall a. Num a => TwoOrThreeWay a -> a product :: forall a. Num a => TwoOrThreeWay a -> a Foldable, (forall a b. (a -> b) -> TwoOrThreeWay a -> TwoOrThreeWay b) -> (forall a b. a -> TwoOrThreeWay b -> TwoOrThreeWay a) -> Functor TwoOrThreeWay forall a b. a -> TwoOrThreeWay b -> TwoOrThreeWay a forall a b. (a -> b) -> TwoOrThreeWay a -> TwoOrThreeWay b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f $cfmap :: forall a b. (a -> b) -> TwoOrThreeWay a -> TwoOrThreeWay b fmap :: forall a b. (a -> b) -> TwoOrThreeWay a -> TwoOrThreeWay b $c<$ :: forall a b. a -> TwoOrThreeWay b -> TwoOrThreeWay a <$ :: forall a b. a -> TwoOrThreeWay b -> TwoOrThreeWay a Functor, (forall x. TwoOrThreeWay a -> Rep (TwoOrThreeWay a) x) -> (forall x. Rep (TwoOrThreeWay a) x -> TwoOrThreeWay a) -> Generic (TwoOrThreeWay a) forall x. Rep (TwoOrThreeWay a) x -> TwoOrThreeWay a forall x. TwoOrThreeWay a -> Rep (TwoOrThreeWay a) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall a x. Rep (TwoOrThreeWay a) x -> TwoOrThreeWay a forall a x. TwoOrThreeWay a -> Rep (TwoOrThreeWay a) x $cfrom :: forall a x. TwoOrThreeWay a -> Rep (TwoOrThreeWay a) x from :: forall x. TwoOrThreeWay a -> Rep (TwoOrThreeWay a) x $cto :: forall a x. Rep (TwoOrThreeWay a) x -> TwoOrThreeWay a to :: forall x. Rep (TwoOrThreeWay a) x -> TwoOrThreeWay a Generic, Functor TwoOrThreeWay Foldable TwoOrThreeWay (Functor TwoOrThreeWay, Foldable TwoOrThreeWay) => (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> TwoOrThreeWay a -> f (TwoOrThreeWay b)) -> (forall (f :: * -> *) a. Applicative f => TwoOrThreeWay (f a) -> f (TwoOrThreeWay a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> TwoOrThreeWay a -> m (TwoOrThreeWay b)) -> (forall (m :: * -> *) a. Monad m => TwoOrThreeWay (m a) -> m (TwoOrThreeWay a)) -> Traversable TwoOrThreeWay forall (t :: * -> *). (Functor t, Foldable t) => (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> t a -> f (t b)) -> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> t a -> m (t b)) -> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a)) -> Traversable t forall (m :: * -> *) a. Monad m => TwoOrThreeWay (m a) -> m (TwoOrThreeWay a) forall (f :: * -> *) a. Applicative f => TwoOrThreeWay (f a) -> f (TwoOrThreeWay a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> TwoOrThreeWay a -> m (TwoOrThreeWay b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> TwoOrThreeWay a -> f (TwoOrThreeWay b) $ctraverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> TwoOrThreeWay a -> f (TwoOrThreeWay b) traverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> TwoOrThreeWay a -> f (TwoOrThreeWay b) $csequenceA :: forall (f :: * -> *) a. Applicative f => TwoOrThreeWay (f a) -> f (TwoOrThreeWay a) sequenceA :: forall (f :: * -> *) a. Applicative f => TwoOrThreeWay (f a) -> f (TwoOrThreeWay a) $cmapM :: forall (m :: * -> *) a b. Monad m => (a -> m b) -> TwoOrThreeWay a -> m (TwoOrThreeWay b) mapM :: forall (m :: * -> *) a b. Monad m => (a -> m b) -> TwoOrThreeWay a -> m (TwoOrThreeWay b) $csequence :: forall (m :: * -> *) a. Monad m => TwoOrThreeWay (m a) -> m (TwoOrThreeWay a) sequence :: forall (m :: * -> *) a. Monad m => TwoOrThreeWay (m a) -> m (TwoOrThreeWay a) Traversable)