{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Data.Bool.Truthy where class Boolean b where false :: b true :: b (&&*) :: b -> b -> b (||*) :: b -> b -> b notB :: b -> b instance Boolean Bool where false :: Bool false = Bool False true :: Bool true = Bool True &&* :: Bool -> Bool -> Bool (&&*) = Bool -> Bool -> Bool (&&) ||* :: Bool -> Bool -> Bool (||*) = Bool -> Bool -> Bool (||) notB :: Bool -> Bool notB = Bool -> Bool not instance Boolean b => Boolean (a -> b) where true :: a -> b true a _ = b forall b. Boolean b => b true false :: a -> b false a _ = b forall b. Boolean b => b false &&* :: (a -> b) -> (a -> b) -> a -> b (&&*) a -> b f a -> b g a x = a -> b f a x b -> b -> b forall b. Boolean b => b -> b -> b &&* a -> b g a x ||* :: (a -> b) -> (a -> b) -> a -> b (||*) a -> b f a -> b g a x = a -> b f a x b -> b -> b forall b. Boolean b => b -> b -> b ||* a -> b g a x notB :: (a -> b) -> a -> b notB a -> b f a x = b -> b forall b. Boolean b => b -> b notB (b -> b) -> b -> b forall a b. (a -> b) -> a -> b $ a -> b f a x class Boolean (BooleanRep b) => Truthy b where type BooleanRep b truthy :: b -> BooleanRep b instance Truthy Bool where type BooleanRep Bool = Bool truthy :: Bool -> BooleanRep Bool truthy = Bool -> BooleanRep Bool forall a. a -> a id instance Truthy b => Truthy (a -> b) where type BooleanRep (a -> b) = a -> BooleanRep b truthy :: (a -> b) -> BooleanRep (a -> b) truthy = (b -> BooleanRep b forall b. Truthy b => b -> BooleanRep b truthy (b -> BooleanRep b) -> (a -> b) -> a -> BooleanRep b forall b c a. (b -> c) -> (a -> b) -> a -> c .) newtype ZeroFalse n = ZeroFalse { ZeroFalse n -> n unZeroFalse :: n } deriving (Int -> ZeroFalse n -> ShowS [ZeroFalse n] -> ShowS ZeroFalse n -> String (Int -> ZeroFalse n -> ShowS) -> (ZeroFalse n -> String) -> ([ZeroFalse n] -> ShowS) -> Show (ZeroFalse n) forall n. Show n => Int -> ZeroFalse n -> ShowS forall n. Show n => [ZeroFalse n] -> ShowS forall n. Show n => ZeroFalse n -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ZeroFalse n] -> ShowS $cshowList :: forall n. Show n => [ZeroFalse n] -> ShowS show :: ZeroFalse n -> String $cshow :: forall n. Show n => ZeroFalse n -> String showsPrec :: Int -> ZeroFalse n -> ShowS $cshowsPrec :: forall n. Show n => Int -> ZeroFalse n -> ShowS Show, ZeroFalse n -> ZeroFalse n -> Bool (ZeroFalse n -> ZeroFalse n -> Bool) -> (ZeroFalse n -> ZeroFalse n -> Bool) -> Eq (ZeroFalse n) forall n. Eq n => ZeroFalse n -> ZeroFalse n -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ZeroFalse n -> ZeroFalse n -> Bool $c/= :: forall n. Eq n => ZeroFalse n -> ZeroFalse n -> Bool == :: ZeroFalse n -> ZeroFalse n -> Bool $c== :: forall n. Eq n => ZeroFalse n -> ZeroFalse n -> Bool Eq, Eq (ZeroFalse n) Eq (ZeroFalse n) -> (ZeroFalse n -> ZeroFalse n -> Ordering) -> (ZeroFalse n -> ZeroFalse n -> Bool) -> (ZeroFalse n -> ZeroFalse n -> Bool) -> (ZeroFalse n -> ZeroFalse n -> Bool) -> (ZeroFalse n -> ZeroFalse n -> Bool) -> (ZeroFalse n -> ZeroFalse n -> ZeroFalse n) -> (ZeroFalse n -> ZeroFalse n -> ZeroFalse n) -> Ord (ZeroFalse n) ZeroFalse n -> ZeroFalse n -> Bool ZeroFalse n -> ZeroFalse n -> Ordering ZeroFalse n -> ZeroFalse n -> ZeroFalse n forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall n. Ord n => Eq (ZeroFalse n) forall n. Ord n => ZeroFalse n -> ZeroFalse n -> Bool forall n. Ord n => ZeroFalse n -> ZeroFalse n -> Ordering forall n. Ord n => ZeroFalse n -> ZeroFalse n -> ZeroFalse n min :: ZeroFalse n -> ZeroFalse n -> ZeroFalse n $cmin :: forall n. Ord n => ZeroFalse n -> ZeroFalse n -> ZeroFalse n max :: ZeroFalse n -> ZeroFalse n -> ZeroFalse n $cmax :: forall n. Ord n => ZeroFalse n -> ZeroFalse n -> ZeroFalse n >= :: ZeroFalse n -> ZeroFalse n -> Bool $c>= :: forall n. Ord n => ZeroFalse n -> ZeroFalse n -> Bool > :: ZeroFalse n -> ZeroFalse n -> Bool $c> :: forall n. Ord n => ZeroFalse n -> ZeroFalse n -> Bool <= :: ZeroFalse n -> ZeroFalse n -> Bool $c<= :: forall n. Ord n => ZeroFalse n -> ZeroFalse n -> Bool < :: ZeroFalse n -> ZeroFalse n -> Bool $c< :: forall n. Ord n => ZeroFalse n -> ZeroFalse n -> Bool compare :: ZeroFalse n -> ZeroFalse n -> Ordering $ccompare :: forall n. Ord n => ZeroFalse n -> ZeroFalse n -> Ordering $cp1Ord :: forall n. Ord n => Eq (ZeroFalse n) Ord, Integer -> ZeroFalse n ZeroFalse n -> ZeroFalse n ZeroFalse n -> ZeroFalse n -> ZeroFalse n (ZeroFalse n -> ZeroFalse n -> ZeroFalse n) -> (ZeroFalse n -> ZeroFalse n -> ZeroFalse n) -> (ZeroFalse n -> ZeroFalse n -> ZeroFalse n) -> (ZeroFalse n -> ZeroFalse n) -> (ZeroFalse n -> ZeroFalse n) -> (ZeroFalse n -> ZeroFalse n) -> (Integer -> ZeroFalse n) -> Num (ZeroFalse n) forall n. Num n => Integer -> ZeroFalse n forall n. Num n => ZeroFalse n -> ZeroFalse n forall n. Num n => ZeroFalse n -> ZeroFalse n -> ZeroFalse n forall a. (a -> a -> a) -> (a -> a -> a) -> (a -> a -> a) -> (a -> a) -> (a -> a) -> (a -> a) -> (Integer -> a) -> Num a fromInteger :: Integer -> ZeroFalse n $cfromInteger :: forall n. Num n => Integer -> ZeroFalse n signum :: ZeroFalse n -> ZeroFalse n $csignum :: forall n. Num n => ZeroFalse n -> ZeroFalse n abs :: ZeroFalse n -> ZeroFalse n $cabs :: forall n. Num n => ZeroFalse n -> ZeroFalse n negate :: ZeroFalse n -> ZeroFalse n $cnegate :: forall n. Num n => ZeroFalse n -> ZeroFalse n * :: ZeroFalse n -> ZeroFalse n -> ZeroFalse n $c* :: forall n. Num n => ZeroFalse n -> ZeroFalse n -> ZeroFalse n - :: ZeroFalse n -> ZeroFalse n -> ZeroFalse n $c- :: forall n. Num n => ZeroFalse n -> ZeroFalse n -> ZeroFalse n + :: ZeroFalse n -> ZeroFalse n -> ZeroFalse n $c+ :: forall n. Num n => ZeroFalse n -> ZeroFalse n -> ZeroFalse n Num, a -> ZeroFalse b -> ZeroFalse a (a -> b) -> ZeroFalse a -> ZeroFalse b (forall a b. (a -> b) -> ZeroFalse a -> ZeroFalse b) -> (forall a b. a -> ZeroFalse b -> ZeroFalse a) -> Functor ZeroFalse forall a b. a -> ZeroFalse b -> ZeroFalse a forall a b. (a -> b) -> ZeroFalse a -> ZeroFalse b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> ZeroFalse b -> ZeroFalse a $c<$ :: forall a b. a -> ZeroFalse b -> ZeroFalse a fmap :: (a -> b) -> ZeroFalse a -> ZeroFalse b $cfmap :: forall a b. (a -> b) -> ZeroFalse a -> ZeroFalse b Functor, ZeroFalse a -> Bool (a -> m) -> ZeroFalse a -> m (a -> b -> b) -> b -> ZeroFalse a -> b (forall m. Monoid m => ZeroFalse m -> m) -> (forall m a. Monoid m => (a -> m) -> ZeroFalse a -> m) -> (forall m a. Monoid m => (a -> m) -> ZeroFalse a -> m) -> (forall a b. (a -> b -> b) -> b -> ZeroFalse a -> b) -> (forall a b. (a -> b -> b) -> b -> ZeroFalse a -> b) -> (forall b a. (b -> a -> b) -> b -> ZeroFalse a -> b) -> (forall b a. (b -> a -> b) -> b -> ZeroFalse a -> b) -> (forall a. (a -> a -> a) -> ZeroFalse a -> a) -> (forall a. (a -> a -> a) -> ZeroFalse a -> a) -> (forall a. ZeroFalse a -> [a]) -> (forall a. ZeroFalse a -> Bool) -> (forall a. ZeroFalse a -> Int) -> (forall a. Eq a => a -> ZeroFalse a -> Bool) -> (forall a. Ord a => ZeroFalse a -> a) -> (forall a. Ord a => ZeroFalse a -> a) -> (forall a. Num a => ZeroFalse a -> a) -> (forall a. Num a => ZeroFalse a -> a) -> Foldable ZeroFalse forall a. Eq a => a -> ZeroFalse a -> Bool forall a. Num a => ZeroFalse a -> a forall a. Ord a => ZeroFalse a -> a forall m. Monoid m => ZeroFalse m -> m forall a. ZeroFalse a -> Bool forall a. ZeroFalse a -> Int forall a. ZeroFalse a -> [a] forall a. (a -> a -> a) -> ZeroFalse a -> a forall m a. Monoid m => (a -> m) -> ZeroFalse a -> m forall b a. (b -> a -> b) -> b -> ZeroFalse a -> b forall a b. (a -> b -> b) -> b -> ZeroFalse 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 product :: ZeroFalse a -> a $cproduct :: forall a. Num a => ZeroFalse a -> a sum :: ZeroFalse a -> a $csum :: forall a. Num a => ZeroFalse a -> a minimum :: ZeroFalse a -> a $cminimum :: forall a. Ord a => ZeroFalse a -> a maximum :: ZeroFalse a -> a $cmaximum :: forall a. Ord a => ZeroFalse a -> a elem :: a -> ZeroFalse a -> Bool $celem :: forall a. Eq a => a -> ZeroFalse a -> Bool length :: ZeroFalse a -> Int $clength :: forall a. ZeroFalse a -> Int null :: ZeroFalse a -> Bool $cnull :: forall a. ZeroFalse a -> Bool toList :: ZeroFalse a -> [a] $ctoList :: forall a. ZeroFalse a -> [a] foldl1 :: (a -> a -> a) -> ZeroFalse a -> a $cfoldl1 :: forall a. (a -> a -> a) -> ZeroFalse a -> a foldr1 :: (a -> a -> a) -> ZeroFalse a -> a $cfoldr1 :: forall a. (a -> a -> a) -> ZeroFalse a -> a foldl' :: (b -> a -> b) -> b -> ZeroFalse a -> b $cfoldl' :: forall b a. (b -> a -> b) -> b -> ZeroFalse a -> b foldl :: (b -> a -> b) -> b -> ZeroFalse a -> b $cfoldl :: forall b a. (b -> a -> b) -> b -> ZeroFalse a -> b foldr' :: (a -> b -> b) -> b -> ZeroFalse a -> b $cfoldr' :: forall a b. (a -> b -> b) -> b -> ZeroFalse a -> b foldr :: (a -> b -> b) -> b -> ZeroFalse a -> b $cfoldr :: forall a b. (a -> b -> b) -> b -> ZeroFalse a -> b foldMap' :: (a -> m) -> ZeroFalse a -> m $cfoldMap' :: forall m a. Monoid m => (a -> m) -> ZeroFalse a -> m foldMap :: (a -> m) -> ZeroFalse a -> m $cfoldMap :: forall m a. Monoid m => (a -> m) -> ZeroFalse a -> m fold :: ZeroFalse m -> m $cfold :: forall m. Monoid m => ZeroFalse m -> m Foldable, Functor ZeroFalse Foldable ZeroFalse Functor ZeroFalse -> Foldable ZeroFalse -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> ZeroFalse a -> f (ZeroFalse b)) -> (forall (f :: * -> *) a. Applicative f => ZeroFalse (f a) -> f (ZeroFalse a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> ZeroFalse a -> m (ZeroFalse b)) -> (forall (m :: * -> *) a. Monad m => ZeroFalse (m a) -> m (ZeroFalse a)) -> Traversable ZeroFalse (a -> f b) -> ZeroFalse a -> f (ZeroFalse b) 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 => ZeroFalse (m a) -> m (ZeroFalse a) forall (f :: * -> *) a. Applicative f => ZeroFalse (f a) -> f (ZeroFalse a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> ZeroFalse a -> m (ZeroFalse b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> ZeroFalse a -> f (ZeroFalse b) sequence :: ZeroFalse (m a) -> m (ZeroFalse a) $csequence :: forall (m :: * -> *) a. Monad m => ZeroFalse (m a) -> m (ZeroFalse a) mapM :: (a -> m b) -> ZeroFalse a -> m (ZeroFalse b) $cmapM :: forall (m :: * -> *) a b. Monad m => (a -> m b) -> ZeroFalse a -> m (ZeroFalse b) sequenceA :: ZeroFalse (f a) -> f (ZeroFalse a) $csequenceA :: forall (f :: * -> *) a. Applicative f => ZeroFalse (f a) -> f (ZeroFalse a) traverse :: (a -> f b) -> ZeroFalse a -> f (ZeroFalse b) $ctraverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> ZeroFalse a -> f (ZeroFalse b) $cp2Traversable :: Foldable ZeroFalse $cp1Traversable :: Functor ZeroFalse Traversable) instance (Eq n, Num n) => Truthy (ZeroFalse n) where type BooleanRep (ZeroFalse n) = Bool truthy :: ZeroFalse n -> BooleanRep (ZeroFalse n) truthy (ZeroFalse n n) = n n n -> n -> Bool forall a. Eq a => a -> a -> Bool /= n 0 newtype PositiveTrue n = PositiveTrue { PositiveTrue n -> n unPositiveTrue :: n } deriving (Int -> PositiveTrue n -> ShowS [PositiveTrue n] -> ShowS PositiveTrue n -> String (Int -> PositiveTrue n -> ShowS) -> (PositiveTrue n -> String) -> ([PositiveTrue n] -> ShowS) -> Show (PositiveTrue n) forall n. Show n => Int -> PositiveTrue n -> ShowS forall n. Show n => [PositiveTrue n] -> ShowS forall n. Show n => PositiveTrue n -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [PositiveTrue n] -> ShowS $cshowList :: forall n. Show n => [PositiveTrue n] -> ShowS show :: PositiveTrue n -> String $cshow :: forall n. Show n => PositiveTrue n -> String showsPrec :: Int -> PositiveTrue n -> ShowS $cshowsPrec :: forall n. Show n => Int -> PositiveTrue n -> ShowS Show, PositiveTrue n -> PositiveTrue n -> Bool (PositiveTrue n -> PositiveTrue n -> Bool) -> (PositiveTrue n -> PositiveTrue n -> Bool) -> Eq (PositiveTrue n) forall n. Eq n => PositiveTrue n -> PositiveTrue n -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PositiveTrue n -> PositiveTrue n -> Bool $c/= :: forall n. Eq n => PositiveTrue n -> PositiveTrue n -> Bool == :: PositiveTrue n -> PositiveTrue n -> Bool $c== :: forall n. Eq n => PositiveTrue n -> PositiveTrue n -> Bool Eq, Eq (PositiveTrue n) Eq (PositiveTrue n) -> (PositiveTrue n -> PositiveTrue n -> Ordering) -> (PositiveTrue n -> PositiveTrue n -> Bool) -> (PositiveTrue n -> PositiveTrue n -> Bool) -> (PositiveTrue n -> PositiveTrue n -> Bool) -> (PositiveTrue n -> PositiveTrue n -> Bool) -> (PositiveTrue n -> PositiveTrue n -> PositiveTrue n) -> (PositiveTrue n -> PositiveTrue n -> PositiveTrue n) -> Ord (PositiveTrue n) PositiveTrue n -> PositiveTrue n -> Bool PositiveTrue n -> PositiveTrue n -> Ordering PositiveTrue n -> PositiveTrue n -> PositiveTrue n forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall n. Ord n => Eq (PositiveTrue n) forall n. Ord n => PositiveTrue n -> PositiveTrue n -> Bool forall n. Ord n => PositiveTrue n -> PositiveTrue n -> Ordering forall n. Ord n => PositiveTrue n -> PositiveTrue n -> PositiveTrue n min :: PositiveTrue n -> PositiveTrue n -> PositiveTrue n $cmin :: forall n. Ord n => PositiveTrue n -> PositiveTrue n -> PositiveTrue n max :: PositiveTrue n -> PositiveTrue n -> PositiveTrue n $cmax :: forall n. Ord n => PositiveTrue n -> PositiveTrue n -> PositiveTrue n >= :: PositiveTrue n -> PositiveTrue n -> Bool $c>= :: forall n. Ord n => PositiveTrue n -> PositiveTrue n -> Bool > :: PositiveTrue n -> PositiveTrue n -> Bool $c> :: forall n. Ord n => PositiveTrue n -> PositiveTrue n -> Bool <= :: PositiveTrue n -> PositiveTrue n -> Bool $c<= :: forall n. Ord n => PositiveTrue n -> PositiveTrue n -> Bool < :: PositiveTrue n -> PositiveTrue n -> Bool $c< :: forall n. Ord n => PositiveTrue n -> PositiveTrue n -> Bool compare :: PositiveTrue n -> PositiveTrue n -> Ordering $ccompare :: forall n. Ord n => PositiveTrue n -> PositiveTrue n -> Ordering $cp1Ord :: forall n. Ord n => Eq (PositiveTrue n) Ord, Integer -> PositiveTrue n PositiveTrue n -> PositiveTrue n PositiveTrue n -> PositiveTrue n -> PositiveTrue n (PositiveTrue n -> PositiveTrue n -> PositiveTrue n) -> (PositiveTrue n -> PositiveTrue n -> PositiveTrue n) -> (PositiveTrue n -> PositiveTrue n -> PositiveTrue n) -> (PositiveTrue n -> PositiveTrue n) -> (PositiveTrue n -> PositiveTrue n) -> (PositiveTrue n -> PositiveTrue n) -> (Integer -> PositiveTrue n) -> Num (PositiveTrue n) forall n. Num n => Integer -> PositiveTrue n forall n. Num n => PositiveTrue n -> PositiveTrue n forall n. Num n => PositiveTrue n -> PositiveTrue n -> PositiveTrue n forall a. (a -> a -> a) -> (a -> a -> a) -> (a -> a -> a) -> (a -> a) -> (a -> a) -> (a -> a) -> (Integer -> a) -> Num a fromInteger :: Integer -> PositiveTrue n $cfromInteger :: forall n. Num n => Integer -> PositiveTrue n signum :: PositiveTrue n -> PositiveTrue n $csignum :: forall n. Num n => PositiveTrue n -> PositiveTrue n abs :: PositiveTrue n -> PositiveTrue n $cabs :: forall n. Num n => PositiveTrue n -> PositiveTrue n negate :: PositiveTrue n -> PositiveTrue n $cnegate :: forall n. Num n => PositiveTrue n -> PositiveTrue n * :: PositiveTrue n -> PositiveTrue n -> PositiveTrue n $c* :: forall n. Num n => PositiveTrue n -> PositiveTrue n -> PositiveTrue n - :: PositiveTrue n -> PositiveTrue n -> PositiveTrue n $c- :: forall n. Num n => PositiveTrue n -> PositiveTrue n -> PositiveTrue n + :: PositiveTrue n -> PositiveTrue n -> PositiveTrue n $c+ :: forall n. Num n => PositiveTrue n -> PositiveTrue n -> PositiveTrue n Num, a -> PositiveTrue b -> PositiveTrue a (a -> b) -> PositiveTrue a -> PositiveTrue b (forall a b. (a -> b) -> PositiveTrue a -> PositiveTrue b) -> (forall a b. a -> PositiveTrue b -> PositiveTrue a) -> Functor PositiveTrue forall a b. a -> PositiveTrue b -> PositiveTrue a forall a b. (a -> b) -> PositiveTrue a -> PositiveTrue b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> PositiveTrue b -> PositiveTrue a $c<$ :: forall a b. a -> PositiveTrue b -> PositiveTrue a fmap :: (a -> b) -> PositiveTrue a -> PositiveTrue b $cfmap :: forall a b. (a -> b) -> PositiveTrue a -> PositiveTrue b Functor, PositiveTrue a -> Bool (a -> m) -> PositiveTrue a -> m (a -> b -> b) -> b -> PositiveTrue a -> b (forall m. Monoid m => PositiveTrue m -> m) -> (forall m a. Monoid m => (a -> m) -> PositiveTrue a -> m) -> (forall m a. Monoid m => (a -> m) -> PositiveTrue a -> m) -> (forall a b. (a -> b -> b) -> b -> PositiveTrue a -> b) -> (forall a b. (a -> b -> b) -> b -> PositiveTrue a -> b) -> (forall b a. (b -> a -> b) -> b -> PositiveTrue a -> b) -> (forall b a. (b -> a -> b) -> b -> PositiveTrue a -> b) -> (forall a. (a -> a -> a) -> PositiveTrue a -> a) -> (forall a. (a -> a -> a) -> PositiveTrue a -> a) -> (forall a. PositiveTrue a -> [a]) -> (forall a. PositiveTrue a -> Bool) -> (forall a. PositiveTrue a -> Int) -> (forall a. Eq a => a -> PositiveTrue a -> Bool) -> (forall a. Ord a => PositiveTrue a -> a) -> (forall a. Ord a => PositiveTrue a -> a) -> (forall a. Num a => PositiveTrue a -> a) -> (forall a. Num a => PositiveTrue a -> a) -> Foldable PositiveTrue forall a. Eq a => a -> PositiveTrue a -> Bool forall a. Num a => PositiveTrue a -> a forall a. Ord a => PositiveTrue a -> a forall m. Monoid m => PositiveTrue m -> m forall a. PositiveTrue a -> Bool forall a. PositiveTrue a -> Int forall a. PositiveTrue a -> [a] forall a. (a -> a -> a) -> PositiveTrue a -> a forall m a. Monoid m => (a -> m) -> PositiveTrue a -> m forall b a. (b -> a -> b) -> b -> PositiveTrue a -> b forall a b. (a -> b -> b) -> b -> PositiveTrue 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 product :: PositiveTrue a -> a $cproduct :: forall a. Num a => PositiveTrue a -> a sum :: PositiveTrue a -> a $csum :: forall a. Num a => PositiveTrue a -> a minimum :: PositiveTrue a -> a $cminimum :: forall a. Ord a => PositiveTrue a -> a maximum :: PositiveTrue a -> a $cmaximum :: forall a. Ord a => PositiveTrue a -> a elem :: a -> PositiveTrue a -> Bool $celem :: forall a. Eq a => a -> PositiveTrue a -> Bool length :: PositiveTrue a -> Int $clength :: forall a. PositiveTrue a -> Int null :: PositiveTrue a -> Bool $cnull :: forall a. PositiveTrue a -> Bool toList :: PositiveTrue a -> [a] $ctoList :: forall a. PositiveTrue a -> [a] foldl1 :: (a -> a -> a) -> PositiveTrue a -> a $cfoldl1 :: forall a. (a -> a -> a) -> PositiveTrue a -> a foldr1 :: (a -> a -> a) -> PositiveTrue a -> a $cfoldr1 :: forall a. (a -> a -> a) -> PositiveTrue a -> a foldl' :: (b -> a -> b) -> b -> PositiveTrue a -> b $cfoldl' :: forall b a. (b -> a -> b) -> b -> PositiveTrue a -> b foldl :: (b -> a -> b) -> b -> PositiveTrue a -> b $cfoldl :: forall b a. (b -> a -> b) -> b -> PositiveTrue a -> b foldr' :: (a -> b -> b) -> b -> PositiveTrue a -> b $cfoldr' :: forall a b. (a -> b -> b) -> b -> PositiveTrue a -> b foldr :: (a -> b -> b) -> b -> PositiveTrue a -> b $cfoldr :: forall a b. (a -> b -> b) -> b -> PositiveTrue a -> b foldMap' :: (a -> m) -> PositiveTrue a -> m $cfoldMap' :: forall m a. Monoid m => (a -> m) -> PositiveTrue a -> m foldMap :: (a -> m) -> PositiveTrue a -> m $cfoldMap :: forall m a. Monoid m => (a -> m) -> PositiveTrue a -> m fold :: PositiveTrue m -> m $cfold :: forall m. Monoid m => PositiveTrue m -> m Foldable, Functor PositiveTrue Foldable PositiveTrue Functor PositiveTrue -> Foldable PositiveTrue -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> PositiveTrue a -> f (PositiveTrue b)) -> (forall (f :: * -> *) a. Applicative f => PositiveTrue (f a) -> f (PositiveTrue a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> PositiveTrue a -> m (PositiveTrue b)) -> (forall (m :: * -> *) a. Monad m => PositiveTrue (m a) -> m (PositiveTrue a)) -> Traversable PositiveTrue (a -> f b) -> PositiveTrue a -> f (PositiveTrue b) 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 => PositiveTrue (m a) -> m (PositiveTrue a) forall (f :: * -> *) a. Applicative f => PositiveTrue (f a) -> f (PositiveTrue a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> PositiveTrue a -> m (PositiveTrue b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> PositiveTrue a -> f (PositiveTrue b) sequence :: PositiveTrue (m a) -> m (PositiveTrue a) $csequence :: forall (m :: * -> *) a. Monad m => PositiveTrue (m a) -> m (PositiveTrue a) mapM :: (a -> m b) -> PositiveTrue a -> m (PositiveTrue b) $cmapM :: forall (m :: * -> *) a b. Monad m => (a -> m b) -> PositiveTrue a -> m (PositiveTrue b) sequenceA :: PositiveTrue (f a) -> f (PositiveTrue a) $csequenceA :: forall (f :: * -> *) a. Applicative f => PositiveTrue (f a) -> f (PositiveTrue a) traverse :: (a -> f b) -> PositiveTrue a -> f (PositiveTrue b) $ctraverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> PositiveTrue a -> f (PositiveTrue b) $cp2Traversable :: Foldable PositiveTrue $cp1Traversable :: Functor PositiveTrue Traversable) instance (Ord n, Num n) => Truthy (PositiveTrue n) where type BooleanRep (PositiveTrue n) = Bool truthy :: PositiveTrue n -> BooleanRep (PositiveTrue n) truthy (PositiveTrue n n) = n n n -> n -> Bool forall a. Ord a => a -> a -> Bool > n 0 newtype EmptyFalse f x = EmptyFalse { EmptyFalse f x -> f x unEmptyFalse :: f x } deriving (Int -> EmptyFalse f x -> ShowS [EmptyFalse f x] -> ShowS EmptyFalse f x -> String (Int -> EmptyFalse f x -> ShowS) -> (EmptyFalse f x -> String) -> ([EmptyFalse f x] -> ShowS) -> Show (EmptyFalse f x) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall (f :: * -> *) x. Show (f x) => Int -> EmptyFalse f x -> ShowS forall (f :: * -> *) x. Show (f x) => [EmptyFalse f x] -> ShowS forall (f :: * -> *) x. Show (f x) => EmptyFalse f x -> String showList :: [EmptyFalse f x] -> ShowS $cshowList :: forall (f :: * -> *) x. Show (f x) => [EmptyFalse f x] -> ShowS show :: EmptyFalse f x -> String $cshow :: forall (f :: * -> *) x. Show (f x) => EmptyFalse f x -> String showsPrec :: Int -> EmptyFalse f x -> ShowS $cshowsPrec :: forall (f :: * -> *) x. Show (f x) => Int -> EmptyFalse f x -> ShowS Show, EmptyFalse f x -> EmptyFalse f x -> Bool (EmptyFalse f x -> EmptyFalse f x -> Bool) -> (EmptyFalse f x -> EmptyFalse f x -> Bool) -> Eq (EmptyFalse f x) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall (f :: * -> *) x. Eq (f x) => EmptyFalse f x -> EmptyFalse f x -> Bool /= :: EmptyFalse f x -> EmptyFalse f x -> Bool $c/= :: forall (f :: * -> *) x. Eq (f x) => EmptyFalse f x -> EmptyFalse f x -> Bool == :: EmptyFalse f x -> EmptyFalse f x -> Bool $c== :: forall (f :: * -> *) x. Eq (f x) => EmptyFalse f x -> EmptyFalse f x -> Bool Eq, Eq (EmptyFalse f x) Eq (EmptyFalse f x) -> (EmptyFalse f x -> EmptyFalse f x -> Ordering) -> (EmptyFalse f x -> EmptyFalse f x -> Bool) -> (EmptyFalse f x -> EmptyFalse f x -> Bool) -> (EmptyFalse f x -> EmptyFalse f x -> Bool) -> (EmptyFalse f x -> EmptyFalse f x -> Bool) -> (EmptyFalse f x -> EmptyFalse f x -> EmptyFalse f x) -> (EmptyFalse f x -> EmptyFalse f x -> EmptyFalse f x) -> Ord (EmptyFalse f x) EmptyFalse f x -> EmptyFalse f x -> Bool EmptyFalse f x -> EmptyFalse f x -> Ordering EmptyFalse f x -> EmptyFalse f x -> EmptyFalse f x forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall (f :: * -> *) x. Ord (f x) => Eq (EmptyFalse f x) forall (f :: * -> *) x. Ord (f x) => EmptyFalse f x -> EmptyFalse f x -> Bool forall (f :: * -> *) x. Ord (f x) => EmptyFalse f x -> EmptyFalse f x -> Ordering forall (f :: * -> *) x. Ord (f x) => EmptyFalse f x -> EmptyFalse f x -> EmptyFalse f x min :: EmptyFalse f x -> EmptyFalse f x -> EmptyFalse f x $cmin :: forall (f :: * -> *) x. Ord (f x) => EmptyFalse f x -> EmptyFalse f x -> EmptyFalse f x max :: EmptyFalse f x -> EmptyFalse f x -> EmptyFalse f x $cmax :: forall (f :: * -> *) x. Ord (f x) => EmptyFalse f x -> EmptyFalse f x -> EmptyFalse f x >= :: EmptyFalse f x -> EmptyFalse f x -> Bool $c>= :: forall (f :: * -> *) x. Ord (f x) => EmptyFalse f x -> EmptyFalse f x -> Bool > :: EmptyFalse f x -> EmptyFalse f x -> Bool $c> :: forall (f :: * -> *) x. Ord (f x) => EmptyFalse f x -> EmptyFalse f x -> Bool <= :: EmptyFalse f x -> EmptyFalse f x -> Bool $c<= :: forall (f :: * -> *) x. Ord (f x) => EmptyFalse f x -> EmptyFalse f x -> Bool < :: EmptyFalse f x -> EmptyFalse f x -> Bool $c< :: forall (f :: * -> *) x. Ord (f x) => EmptyFalse f x -> EmptyFalse f x -> Bool compare :: EmptyFalse f x -> EmptyFalse f x -> Ordering $ccompare :: forall (f :: * -> *) x. Ord (f x) => EmptyFalse f x -> EmptyFalse f x -> Ordering $cp1Ord :: forall (f :: * -> *) x. Ord (f x) => Eq (EmptyFalse f x) Ord, a -> EmptyFalse f b -> EmptyFalse f a (a -> b) -> EmptyFalse f a -> EmptyFalse f b (forall a b. (a -> b) -> EmptyFalse f a -> EmptyFalse f b) -> (forall a b. a -> EmptyFalse f b -> EmptyFalse f a) -> Functor (EmptyFalse f) forall a b. a -> EmptyFalse f b -> EmptyFalse f a forall a b. (a -> b) -> EmptyFalse f a -> EmptyFalse f b forall (f :: * -> *) a b. Functor f => a -> EmptyFalse f b -> EmptyFalse f a forall (f :: * -> *) a b. Functor f => (a -> b) -> EmptyFalse f a -> EmptyFalse f b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> EmptyFalse f b -> EmptyFalse f a $c<$ :: forall (f :: * -> *) a b. Functor f => a -> EmptyFalse f b -> EmptyFalse f a fmap :: (a -> b) -> EmptyFalse f a -> EmptyFalse f b $cfmap :: forall (f :: * -> *) a b. Functor f => (a -> b) -> EmptyFalse f a -> EmptyFalse f b Functor, a -> EmptyFalse f a -> Bool EmptyFalse f m -> m EmptyFalse f a -> [a] EmptyFalse f a -> Bool EmptyFalse f a -> Int EmptyFalse f a -> a EmptyFalse f a -> a EmptyFalse f a -> a EmptyFalse f a -> a (a -> m) -> EmptyFalse f a -> m (a -> m) -> EmptyFalse f a -> m (a -> b -> b) -> b -> EmptyFalse f a -> b (a -> b -> b) -> b -> EmptyFalse f a -> b (b -> a -> b) -> b -> EmptyFalse f a -> b (b -> a -> b) -> b -> EmptyFalse f a -> b (a -> a -> a) -> EmptyFalse f a -> a (a -> a -> a) -> EmptyFalse f a -> a (forall m. Monoid m => EmptyFalse f m -> m) -> (forall m a. Monoid m => (a -> m) -> EmptyFalse f a -> m) -> (forall m a. Monoid m => (a -> m) -> EmptyFalse f a -> m) -> (forall a b. (a -> b -> b) -> b -> EmptyFalse f a -> b) -> (forall a b. (a -> b -> b) -> b -> EmptyFalse f a -> b) -> (forall b a. (b -> a -> b) -> b -> EmptyFalse f a -> b) -> (forall b a. (b -> a -> b) -> b -> EmptyFalse f a -> b) -> (forall a. (a -> a -> a) -> EmptyFalse f a -> a) -> (forall a. (a -> a -> a) -> EmptyFalse f a -> a) -> (forall a. EmptyFalse f a -> [a]) -> (forall a. EmptyFalse f a -> Bool) -> (forall a. EmptyFalse f a -> Int) -> (forall a. Eq a => a -> EmptyFalse f a -> Bool) -> (forall a. Ord a => EmptyFalse f a -> a) -> (forall a. Ord a => EmptyFalse f a -> a) -> (forall a. Num a => EmptyFalse f a -> a) -> (forall a. Num a => EmptyFalse f a -> a) -> Foldable (EmptyFalse f) forall a. Eq a => a -> EmptyFalse f a -> Bool forall a. Num a => EmptyFalse f a -> a forall a. Ord a => EmptyFalse f a -> a forall m. Monoid m => EmptyFalse f m -> m forall a. EmptyFalse f a -> Bool forall a. EmptyFalse f a -> Int forall a. EmptyFalse f a -> [a] forall a. (a -> a -> a) -> EmptyFalse f a -> a forall m a. Monoid m => (a -> m) -> EmptyFalse f a -> m forall b a. (b -> a -> b) -> b -> EmptyFalse f a -> b forall a b. (a -> b -> b) -> b -> EmptyFalse f a -> b forall (f :: * -> *) a. (Foldable f, Eq a) => a -> EmptyFalse f a -> Bool forall (f :: * -> *) a. (Foldable f, Num a) => EmptyFalse f a -> a forall (f :: * -> *) a. (Foldable f, Ord a) => EmptyFalse f a -> a forall (f :: * -> *) m. (Foldable f, Monoid m) => EmptyFalse f m -> m forall (f :: * -> *) a. Foldable f => EmptyFalse f a -> Bool forall (f :: * -> *) a. Foldable f => EmptyFalse f a -> Int forall (f :: * -> *) a. Foldable f => EmptyFalse f a -> [a] forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> EmptyFalse f a -> a forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> EmptyFalse f a -> m forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> EmptyFalse f a -> b forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> EmptyFalse f 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 product :: EmptyFalse f a -> a $cproduct :: forall (f :: * -> *) a. (Foldable f, Num a) => EmptyFalse f a -> a sum :: EmptyFalse f a -> a $csum :: forall (f :: * -> *) a. (Foldable f, Num a) => EmptyFalse f a -> a minimum :: EmptyFalse f a -> a $cminimum :: forall (f :: * -> *) a. (Foldable f, Ord a) => EmptyFalse f a -> a maximum :: EmptyFalse f a -> a $cmaximum :: forall (f :: * -> *) a. (Foldable f, Ord a) => EmptyFalse f a -> a elem :: a -> EmptyFalse f a -> Bool $celem :: forall (f :: * -> *) a. (Foldable f, Eq a) => a -> EmptyFalse f a -> Bool length :: EmptyFalse f a -> Int $clength :: forall (f :: * -> *) a. Foldable f => EmptyFalse f a -> Int null :: EmptyFalse f a -> Bool $cnull :: forall (f :: * -> *) a. Foldable f => EmptyFalse f a -> Bool toList :: EmptyFalse f a -> [a] $ctoList :: forall (f :: * -> *) a. Foldable f => EmptyFalse f a -> [a] foldl1 :: (a -> a -> a) -> EmptyFalse f a -> a $cfoldl1 :: forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> EmptyFalse f a -> a foldr1 :: (a -> a -> a) -> EmptyFalse f a -> a $cfoldr1 :: forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> EmptyFalse f a -> a foldl' :: (b -> a -> b) -> b -> EmptyFalse f a -> b $cfoldl' :: forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> EmptyFalse f a -> b foldl :: (b -> a -> b) -> b -> EmptyFalse f a -> b $cfoldl :: forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> EmptyFalse f a -> b foldr' :: (a -> b -> b) -> b -> EmptyFalse f a -> b $cfoldr' :: forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> EmptyFalse f a -> b foldr :: (a -> b -> b) -> b -> EmptyFalse f a -> b $cfoldr :: forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> EmptyFalse f a -> b foldMap' :: (a -> m) -> EmptyFalse f a -> m $cfoldMap' :: forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> EmptyFalse f a -> m foldMap :: (a -> m) -> EmptyFalse f a -> m $cfoldMap :: forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> EmptyFalse f a -> m fold :: EmptyFalse f m -> m $cfold :: forall (f :: * -> *) m. (Foldable f, Monoid m) => EmptyFalse f m -> m Foldable, Functor (EmptyFalse f) Foldable (EmptyFalse f) Functor (EmptyFalse f) -> Foldable (EmptyFalse f) -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> EmptyFalse f a -> f (EmptyFalse f b)) -> (forall (f :: * -> *) a. Applicative f => EmptyFalse f (f a) -> f (EmptyFalse f a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> EmptyFalse f a -> m (EmptyFalse f b)) -> (forall (m :: * -> *) a. Monad m => EmptyFalse f (m a) -> m (EmptyFalse f a)) -> Traversable (EmptyFalse f) (a -> f b) -> EmptyFalse f a -> f (EmptyFalse f b) 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 (f :: * -> *). Traversable f => Functor (EmptyFalse f) forall (f :: * -> *). Traversable f => Foldable (EmptyFalse f) forall (f :: * -> *) (m :: * -> *) a. (Traversable f, Monad m) => EmptyFalse f (m a) -> m (EmptyFalse f a) forall (f :: * -> *) (f :: * -> *) a. (Traversable f, Applicative f) => EmptyFalse f (f a) -> f (EmptyFalse f a) forall (f :: * -> *) (m :: * -> *) a b. (Traversable f, Monad m) => (a -> m b) -> EmptyFalse f a -> m (EmptyFalse f b) forall (f :: * -> *) (f :: * -> *) a b. (Traversable f, Applicative f) => (a -> f b) -> EmptyFalse f a -> f (EmptyFalse f b) forall (m :: * -> *) a. Monad m => EmptyFalse f (m a) -> m (EmptyFalse f a) forall (f :: * -> *) a. Applicative f => EmptyFalse f (f a) -> f (EmptyFalse f a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> EmptyFalse f a -> m (EmptyFalse f b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> EmptyFalse f a -> f (EmptyFalse f b) sequence :: EmptyFalse f (m a) -> m (EmptyFalse f a) $csequence :: forall (f :: * -> *) (m :: * -> *) a. (Traversable f, Monad m) => EmptyFalse f (m a) -> m (EmptyFalse f a) mapM :: (a -> m b) -> EmptyFalse f a -> m (EmptyFalse f b) $cmapM :: forall (f :: * -> *) (m :: * -> *) a b. (Traversable f, Monad m) => (a -> m b) -> EmptyFalse f a -> m (EmptyFalse f b) sequenceA :: EmptyFalse f (f a) -> f (EmptyFalse f a) $csequenceA :: forall (f :: * -> *) (f :: * -> *) a. (Traversable f, Applicative f) => EmptyFalse f (f a) -> f (EmptyFalse f a) traverse :: (a -> f b) -> EmptyFalse f a -> f (EmptyFalse f b) $ctraverse :: forall (f :: * -> *) (f :: * -> *) a b. (Traversable f, Applicative f) => (a -> f b) -> EmptyFalse f a -> f (EmptyFalse f b) $cp2Traversable :: forall (f :: * -> *). Traversable f => Foldable (EmptyFalse f) $cp1Traversable :: forall (f :: * -> *). Traversable f => Functor (EmptyFalse f) Traversable) instance Foldable f => Truthy (EmptyFalse f x) where type BooleanRep (EmptyFalse f x) = Bool truthy :: EmptyFalse f x -> BooleanRep (EmptyFalse f x) truthy (EmptyFalse f x xs) = f x -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null f x xs newtype AllTrue f x = AllTrue { AllTrue f x -> f x unAllTrue :: f x } deriving (Int -> AllTrue f x -> ShowS [AllTrue f x] -> ShowS AllTrue f x -> String (Int -> AllTrue f x -> ShowS) -> (AllTrue f x -> String) -> ([AllTrue f x] -> ShowS) -> Show (AllTrue f x) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall (f :: * -> *) x. Show (f x) => Int -> AllTrue f x -> ShowS forall (f :: * -> *) x. Show (f x) => [AllTrue f x] -> ShowS forall (f :: * -> *) x. Show (f x) => AllTrue f x -> String showList :: [AllTrue f x] -> ShowS $cshowList :: forall (f :: * -> *) x. Show (f x) => [AllTrue f x] -> ShowS show :: AllTrue f x -> String $cshow :: forall (f :: * -> *) x. Show (f x) => AllTrue f x -> String showsPrec :: Int -> AllTrue f x -> ShowS $cshowsPrec :: forall (f :: * -> *) x. Show (f x) => Int -> AllTrue f x -> ShowS Show, AllTrue f x -> AllTrue f x -> Bool (AllTrue f x -> AllTrue f x -> Bool) -> (AllTrue f x -> AllTrue f x -> Bool) -> Eq (AllTrue f x) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall (f :: * -> *) x. Eq (f x) => AllTrue f x -> AllTrue f x -> Bool /= :: AllTrue f x -> AllTrue f x -> Bool $c/= :: forall (f :: * -> *) x. Eq (f x) => AllTrue f x -> AllTrue f x -> Bool == :: AllTrue f x -> AllTrue f x -> Bool $c== :: forall (f :: * -> *) x. Eq (f x) => AllTrue f x -> AllTrue f x -> Bool Eq, Eq (AllTrue f x) Eq (AllTrue f x) -> (AllTrue f x -> AllTrue f x -> Ordering) -> (AllTrue f x -> AllTrue f x -> Bool) -> (AllTrue f x -> AllTrue f x -> Bool) -> (AllTrue f x -> AllTrue f x -> Bool) -> (AllTrue f x -> AllTrue f x -> Bool) -> (AllTrue f x -> AllTrue f x -> AllTrue f x) -> (AllTrue f x -> AllTrue f x -> AllTrue f x) -> Ord (AllTrue f x) AllTrue f x -> AllTrue f x -> Bool AllTrue f x -> AllTrue f x -> Ordering AllTrue f x -> AllTrue f x -> AllTrue f x forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall (f :: * -> *) x. Ord (f x) => Eq (AllTrue f x) forall (f :: * -> *) x. Ord (f x) => AllTrue f x -> AllTrue f x -> Bool forall (f :: * -> *) x. Ord (f x) => AllTrue f x -> AllTrue f x -> Ordering forall (f :: * -> *) x. Ord (f x) => AllTrue f x -> AllTrue f x -> AllTrue f x min :: AllTrue f x -> AllTrue f x -> AllTrue f x $cmin :: forall (f :: * -> *) x. Ord (f x) => AllTrue f x -> AllTrue f x -> AllTrue f x max :: AllTrue f x -> AllTrue f x -> AllTrue f x $cmax :: forall (f :: * -> *) x. Ord (f x) => AllTrue f x -> AllTrue f x -> AllTrue f x >= :: AllTrue f x -> AllTrue f x -> Bool $c>= :: forall (f :: * -> *) x. Ord (f x) => AllTrue f x -> AllTrue f x -> Bool > :: AllTrue f x -> AllTrue f x -> Bool $c> :: forall (f :: * -> *) x. Ord (f x) => AllTrue f x -> AllTrue f x -> Bool <= :: AllTrue f x -> AllTrue f x -> Bool $c<= :: forall (f :: * -> *) x. Ord (f x) => AllTrue f x -> AllTrue f x -> Bool < :: AllTrue f x -> AllTrue f x -> Bool $c< :: forall (f :: * -> *) x. Ord (f x) => AllTrue f x -> AllTrue f x -> Bool compare :: AllTrue f x -> AllTrue f x -> Ordering $ccompare :: forall (f :: * -> *) x. Ord (f x) => AllTrue f x -> AllTrue f x -> Ordering $cp1Ord :: forall (f :: * -> *) x. Ord (f x) => Eq (AllTrue f x) Ord, a -> AllTrue f b -> AllTrue f a (a -> b) -> AllTrue f a -> AllTrue f b (forall a b. (a -> b) -> AllTrue f a -> AllTrue f b) -> (forall a b. a -> AllTrue f b -> AllTrue f a) -> Functor (AllTrue f) forall a b. a -> AllTrue f b -> AllTrue f a forall a b. (a -> b) -> AllTrue f a -> AllTrue f b forall (f :: * -> *) a b. Functor f => a -> AllTrue f b -> AllTrue f a forall (f :: * -> *) a b. Functor f => (a -> b) -> AllTrue f a -> AllTrue f b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> AllTrue f b -> AllTrue f a $c<$ :: forall (f :: * -> *) a b. Functor f => a -> AllTrue f b -> AllTrue f a fmap :: (a -> b) -> AllTrue f a -> AllTrue f b $cfmap :: forall (f :: * -> *) a b. Functor f => (a -> b) -> AllTrue f a -> AllTrue f b Functor, a -> AllTrue f a -> Bool AllTrue f m -> m AllTrue f a -> [a] AllTrue f a -> Bool AllTrue f a -> Int AllTrue f a -> a AllTrue f a -> a AllTrue f a -> a AllTrue f a -> a (a -> m) -> AllTrue f a -> m (a -> m) -> AllTrue f a -> m (a -> b -> b) -> b -> AllTrue f a -> b (a -> b -> b) -> b -> AllTrue f a -> b (b -> a -> b) -> b -> AllTrue f a -> b (b -> a -> b) -> b -> AllTrue f a -> b (a -> a -> a) -> AllTrue f a -> a (a -> a -> a) -> AllTrue f a -> a (forall m. Monoid m => AllTrue f m -> m) -> (forall m a. Monoid m => (a -> m) -> AllTrue f a -> m) -> (forall m a. Monoid m => (a -> m) -> AllTrue f a -> m) -> (forall a b. (a -> b -> b) -> b -> AllTrue f a -> b) -> (forall a b. (a -> b -> b) -> b -> AllTrue f a -> b) -> (forall b a. (b -> a -> b) -> b -> AllTrue f a -> b) -> (forall b a. (b -> a -> b) -> b -> AllTrue f a -> b) -> (forall a. (a -> a -> a) -> AllTrue f a -> a) -> (forall a. (a -> a -> a) -> AllTrue f a -> a) -> (forall a. AllTrue f a -> [a]) -> (forall a. AllTrue f a -> Bool) -> (forall a. AllTrue f a -> Int) -> (forall a. Eq a => a -> AllTrue f a -> Bool) -> (forall a. Ord a => AllTrue f a -> a) -> (forall a. Ord a => AllTrue f a -> a) -> (forall a. Num a => AllTrue f a -> a) -> (forall a. Num a => AllTrue f a -> a) -> Foldable (AllTrue f) forall a. Eq a => a -> AllTrue f a -> Bool forall a. Num a => AllTrue f a -> a forall a. Ord a => AllTrue f a -> a forall m. Monoid m => AllTrue f m -> m forall a. AllTrue f a -> Bool forall a. AllTrue f a -> Int forall a. AllTrue f a -> [a] forall a. (a -> a -> a) -> AllTrue f a -> a forall m a. Monoid m => (a -> m) -> AllTrue f a -> m forall b a. (b -> a -> b) -> b -> AllTrue f a -> b forall a b. (a -> b -> b) -> b -> AllTrue f a -> b forall (f :: * -> *) a. (Foldable f, Eq a) => a -> AllTrue f a -> Bool forall (f :: * -> *) a. (Foldable f, Num a) => AllTrue f a -> a forall (f :: * -> *) a. (Foldable f, Ord a) => AllTrue f a -> a forall (f :: * -> *) m. (Foldable f, Monoid m) => AllTrue f m -> m forall (f :: * -> *) a. Foldable f => AllTrue f a -> Bool forall (f :: * -> *) a. Foldable f => AllTrue f a -> Int forall (f :: * -> *) a. Foldable f => AllTrue f a -> [a] forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AllTrue f a -> a forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AllTrue f a -> m forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AllTrue f a -> b forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AllTrue f 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 product :: AllTrue f a -> a $cproduct :: forall (f :: * -> *) a. (Foldable f, Num a) => AllTrue f a -> a sum :: AllTrue f a -> a $csum :: forall (f :: * -> *) a. (Foldable f, Num a) => AllTrue f a -> a minimum :: AllTrue f a -> a $cminimum :: forall (f :: * -> *) a. (Foldable f, Ord a) => AllTrue f a -> a maximum :: AllTrue f a -> a $cmaximum :: forall (f :: * -> *) a. (Foldable f, Ord a) => AllTrue f a -> a elem :: a -> AllTrue f a -> Bool $celem :: forall (f :: * -> *) a. (Foldable f, Eq a) => a -> AllTrue f a -> Bool length :: AllTrue f a -> Int $clength :: forall (f :: * -> *) a. Foldable f => AllTrue f a -> Int null :: AllTrue f a -> Bool $cnull :: forall (f :: * -> *) a. Foldable f => AllTrue f a -> Bool toList :: AllTrue f a -> [a] $ctoList :: forall (f :: * -> *) a. Foldable f => AllTrue f a -> [a] foldl1 :: (a -> a -> a) -> AllTrue f a -> a $cfoldl1 :: forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AllTrue f a -> a foldr1 :: (a -> a -> a) -> AllTrue f a -> a $cfoldr1 :: forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AllTrue f a -> a foldl' :: (b -> a -> b) -> b -> AllTrue f a -> b $cfoldl' :: forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AllTrue f a -> b foldl :: (b -> a -> b) -> b -> AllTrue f a -> b $cfoldl :: forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AllTrue f a -> b foldr' :: (a -> b -> b) -> b -> AllTrue f a -> b $cfoldr' :: forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AllTrue f a -> b foldr :: (a -> b -> b) -> b -> AllTrue f a -> b $cfoldr :: forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AllTrue f a -> b foldMap' :: (a -> m) -> AllTrue f a -> m $cfoldMap' :: forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AllTrue f a -> m foldMap :: (a -> m) -> AllTrue f a -> m $cfoldMap :: forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AllTrue f a -> m fold :: AllTrue f m -> m $cfold :: forall (f :: * -> *) m. (Foldable f, Monoid m) => AllTrue f m -> m Foldable, Functor (AllTrue f) Foldable (AllTrue f) Functor (AllTrue f) -> Foldable (AllTrue f) -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> AllTrue f a -> f (AllTrue f b)) -> (forall (f :: * -> *) a. Applicative f => AllTrue f (f a) -> f (AllTrue f a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> AllTrue f a -> m (AllTrue f b)) -> (forall (m :: * -> *) a. Monad m => AllTrue f (m a) -> m (AllTrue f a)) -> Traversable (AllTrue f) (a -> f b) -> AllTrue f a -> f (AllTrue f b) 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 (f :: * -> *). Traversable f => Functor (AllTrue f) forall (f :: * -> *). Traversable f => Foldable (AllTrue f) forall (f :: * -> *) (m :: * -> *) a. (Traversable f, Monad m) => AllTrue f (m a) -> m (AllTrue f a) forall (f :: * -> *) (f :: * -> *) a. (Traversable f, Applicative f) => AllTrue f (f a) -> f (AllTrue f a) forall (f :: * -> *) (m :: * -> *) a b. (Traversable f, Monad m) => (a -> m b) -> AllTrue f a -> m (AllTrue f b) forall (f :: * -> *) (f :: * -> *) a b. (Traversable f, Applicative f) => (a -> f b) -> AllTrue f a -> f (AllTrue f b) forall (m :: * -> *) a. Monad m => AllTrue f (m a) -> m (AllTrue f a) forall (f :: * -> *) a. Applicative f => AllTrue f (f a) -> f (AllTrue f a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> AllTrue f a -> m (AllTrue f b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> AllTrue f a -> f (AllTrue f b) sequence :: AllTrue f (m a) -> m (AllTrue f a) $csequence :: forall (f :: * -> *) (m :: * -> *) a. (Traversable f, Monad m) => AllTrue f (m a) -> m (AllTrue f a) mapM :: (a -> m b) -> AllTrue f a -> m (AllTrue f b) $cmapM :: forall (f :: * -> *) (m :: * -> *) a b. (Traversable f, Monad m) => (a -> m b) -> AllTrue f a -> m (AllTrue f b) sequenceA :: AllTrue f (f a) -> f (AllTrue f a) $csequenceA :: forall (f :: * -> *) (f :: * -> *) a. (Traversable f, Applicative f) => AllTrue f (f a) -> f (AllTrue f a) traverse :: (a -> f b) -> AllTrue f a -> f (AllTrue f b) $ctraverse :: forall (f :: * -> *) (f :: * -> *) a b. (Traversable f, Applicative f) => (a -> f b) -> AllTrue f a -> f (AllTrue f b) $cp2Traversable :: forall (f :: * -> *). Traversable f => Foldable (AllTrue f) $cp1Traversable :: forall (f :: * -> *). Traversable f => Functor (AllTrue f) Traversable) instance (Foldable f, Boolean x) => Truthy (AllTrue f x) where type BooleanRep (AllTrue f x) = x truthy :: AllTrue f x -> BooleanRep (AllTrue f x) truthy (AllTrue f x xs) = (x -> x -> x) -> x -> f x -> x forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr x -> x -> x forall b. Boolean b => b -> b -> b (&&*) x forall b. Boolean b => b true f x xs newtype AllTruthy f x = AllTruthy { AllTruthy f x -> f x unAllTruthy :: f x } deriving (Int -> AllTruthy f x -> ShowS [AllTruthy f x] -> ShowS AllTruthy f x -> String (Int -> AllTruthy f x -> ShowS) -> (AllTruthy f x -> String) -> ([AllTruthy f x] -> ShowS) -> Show (AllTruthy f x) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall (f :: * -> *) x. Show (f x) => Int -> AllTruthy f x -> ShowS forall (f :: * -> *) x. Show (f x) => [AllTruthy f x] -> ShowS forall (f :: * -> *) x. Show (f x) => AllTruthy f x -> String showList :: [AllTruthy f x] -> ShowS $cshowList :: forall (f :: * -> *) x. Show (f x) => [AllTruthy f x] -> ShowS show :: AllTruthy f x -> String $cshow :: forall (f :: * -> *) x. Show (f x) => AllTruthy f x -> String showsPrec :: Int -> AllTruthy f x -> ShowS $cshowsPrec :: forall (f :: * -> *) x. Show (f x) => Int -> AllTruthy f x -> ShowS Show, AllTruthy f x -> AllTruthy f x -> Bool (AllTruthy f x -> AllTruthy f x -> Bool) -> (AllTruthy f x -> AllTruthy f x -> Bool) -> Eq (AllTruthy f x) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall (f :: * -> *) x. Eq (f x) => AllTruthy f x -> AllTruthy f x -> Bool /= :: AllTruthy f x -> AllTruthy f x -> Bool $c/= :: forall (f :: * -> *) x. Eq (f x) => AllTruthy f x -> AllTruthy f x -> Bool == :: AllTruthy f x -> AllTruthy f x -> Bool $c== :: forall (f :: * -> *) x. Eq (f x) => AllTruthy f x -> AllTruthy f x -> Bool Eq, Eq (AllTruthy f x) Eq (AllTruthy f x) -> (AllTruthy f x -> AllTruthy f x -> Ordering) -> (AllTruthy f x -> AllTruthy f x -> Bool) -> (AllTruthy f x -> AllTruthy f x -> Bool) -> (AllTruthy f x -> AllTruthy f x -> Bool) -> (AllTruthy f x -> AllTruthy f x -> Bool) -> (AllTruthy f x -> AllTruthy f x -> AllTruthy f x) -> (AllTruthy f x -> AllTruthy f x -> AllTruthy f x) -> Ord (AllTruthy f x) AllTruthy f x -> AllTruthy f x -> Bool AllTruthy f x -> AllTruthy f x -> Ordering AllTruthy f x -> AllTruthy f x -> AllTruthy f x forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall (f :: * -> *) x. Ord (f x) => Eq (AllTruthy f x) forall (f :: * -> *) x. Ord (f x) => AllTruthy f x -> AllTruthy f x -> Bool forall (f :: * -> *) x. Ord (f x) => AllTruthy f x -> AllTruthy f x -> Ordering forall (f :: * -> *) x. Ord (f x) => AllTruthy f x -> AllTruthy f x -> AllTruthy f x min :: AllTruthy f x -> AllTruthy f x -> AllTruthy f x $cmin :: forall (f :: * -> *) x. Ord (f x) => AllTruthy f x -> AllTruthy f x -> AllTruthy f x max :: AllTruthy f x -> AllTruthy f x -> AllTruthy f x $cmax :: forall (f :: * -> *) x. Ord (f x) => AllTruthy f x -> AllTruthy f x -> AllTruthy f x >= :: AllTruthy f x -> AllTruthy f x -> Bool $c>= :: forall (f :: * -> *) x. Ord (f x) => AllTruthy f x -> AllTruthy f x -> Bool > :: AllTruthy f x -> AllTruthy f x -> Bool $c> :: forall (f :: * -> *) x. Ord (f x) => AllTruthy f x -> AllTruthy f x -> Bool <= :: AllTruthy f x -> AllTruthy f x -> Bool $c<= :: forall (f :: * -> *) x. Ord (f x) => AllTruthy f x -> AllTruthy f x -> Bool < :: AllTruthy f x -> AllTruthy f x -> Bool $c< :: forall (f :: * -> *) x. Ord (f x) => AllTruthy f x -> AllTruthy f x -> Bool compare :: AllTruthy f x -> AllTruthy f x -> Ordering $ccompare :: forall (f :: * -> *) x. Ord (f x) => AllTruthy f x -> AllTruthy f x -> Ordering $cp1Ord :: forall (f :: * -> *) x. Ord (f x) => Eq (AllTruthy f x) Ord, a -> AllTruthy f b -> AllTruthy f a (a -> b) -> AllTruthy f a -> AllTruthy f b (forall a b. (a -> b) -> AllTruthy f a -> AllTruthy f b) -> (forall a b. a -> AllTruthy f b -> AllTruthy f a) -> Functor (AllTruthy f) forall a b. a -> AllTruthy f b -> AllTruthy f a forall a b. (a -> b) -> AllTruthy f a -> AllTruthy f b forall (f :: * -> *) a b. Functor f => a -> AllTruthy f b -> AllTruthy f a forall (f :: * -> *) a b. Functor f => (a -> b) -> AllTruthy f a -> AllTruthy f b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> AllTruthy f b -> AllTruthy f a $c<$ :: forall (f :: * -> *) a b. Functor f => a -> AllTruthy f b -> AllTruthy f a fmap :: (a -> b) -> AllTruthy f a -> AllTruthy f b $cfmap :: forall (f :: * -> *) a b. Functor f => (a -> b) -> AllTruthy f a -> AllTruthy f b Functor, a -> AllTruthy f a -> Bool AllTruthy f m -> m AllTruthy f a -> [a] AllTruthy f a -> Bool AllTruthy f a -> Int AllTruthy f a -> a AllTruthy f a -> a AllTruthy f a -> a AllTruthy f a -> a (a -> m) -> AllTruthy f a -> m (a -> m) -> AllTruthy f a -> m (a -> b -> b) -> b -> AllTruthy f a -> b (a -> b -> b) -> b -> AllTruthy f a -> b (b -> a -> b) -> b -> AllTruthy f a -> b (b -> a -> b) -> b -> AllTruthy f a -> b (a -> a -> a) -> AllTruthy f a -> a (a -> a -> a) -> AllTruthy f a -> a (forall m. Monoid m => AllTruthy f m -> m) -> (forall m a. Monoid m => (a -> m) -> AllTruthy f a -> m) -> (forall m a. Monoid m => (a -> m) -> AllTruthy f a -> m) -> (forall a b. (a -> b -> b) -> b -> AllTruthy f a -> b) -> (forall a b. (a -> b -> b) -> b -> AllTruthy f a -> b) -> (forall b a. (b -> a -> b) -> b -> AllTruthy f a -> b) -> (forall b a. (b -> a -> b) -> b -> AllTruthy f a -> b) -> (forall a. (a -> a -> a) -> AllTruthy f a -> a) -> (forall a. (a -> a -> a) -> AllTruthy f a -> a) -> (forall a. AllTruthy f a -> [a]) -> (forall a. AllTruthy f a -> Bool) -> (forall a. AllTruthy f a -> Int) -> (forall a. Eq a => a -> AllTruthy f a -> Bool) -> (forall a. Ord a => AllTruthy f a -> a) -> (forall a. Ord a => AllTruthy f a -> a) -> (forall a. Num a => AllTruthy f a -> a) -> (forall a. Num a => AllTruthy f a -> a) -> Foldable (AllTruthy f) forall a. Eq a => a -> AllTruthy f a -> Bool forall a. Num a => AllTruthy f a -> a forall a. Ord a => AllTruthy f a -> a forall m. Monoid m => AllTruthy f m -> m forall a. AllTruthy f a -> Bool forall a. AllTruthy f a -> Int forall a. AllTruthy f a -> [a] forall a. (a -> a -> a) -> AllTruthy f a -> a forall m a. Monoid m => (a -> m) -> AllTruthy f a -> m forall b a. (b -> a -> b) -> b -> AllTruthy f a -> b forall a b. (a -> b -> b) -> b -> AllTruthy f a -> b forall (f :: * -> *) a. (Foldable f, Eq a) => a -> AllTruthy f a -> Bool forall (f :: * -> *) a. (Foldable f, Num a) => AllTruthy f a -> a forall (f :: * -> *) a. (Foldable f, Ord a) => AllTruthy f a -> a forall (f :: * -> *) m. (Foldable f, Monoid m) => AllTruthy f m -> m forall (f :: * -> *) a. Foldable f => AllTruthy f a -> Bool forall (f :: * -> *) a. Foldable f => AllTruthy f a -> Int forall (f :: * -> *) a. Foldable f => AllTruthy f a -> [a] forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AllTruthy f a -> a forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AllTruthy f a -> m forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AllTruthy f a -> b forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AllTruthy f 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 product :: AllTruthy f a -> a $cproduct :: forall (f :: * -> *) a. (Foldable f, Num a) => AllTruthy f a -> a sum :: AllTruthy f a -> a $csum :: forall (f :: * -> *) a. (Foldable f, Num a) => AllTruthy f a -> a minimum :: AllTruthy f a -> a $cminimum :: forall (f :: * -> *) a. (Foldable f, Ord a) => AllTruthy f a -> a maximum :: AllTruthy f a -> a $cmaximum :: forall (f :: * -> *) a. (Foldable f, Ord a) => AllTruthy f a -> a elem :: a -> AllTruthy f a -> Bool $celem :: forall (f :: * -> *) a. (Foldable f, Eq a) => a -> AllTruthy f a -> Bool length :: AllTruthy f a -> Int $clength :: forall (f :: * -> *) a. Foldable f => AllTruthy f a -> Int null :: AllTruthy f a -> Bool $cnull :: forall (f :: * -> *) a. Foldable f => AllTruthy f a -> Bool toList :: AllTruthy f a -> [a] $ctoList :: forall (f :: * -> *) a. Foldable f => AllTruthy f a -> [a] foldl1 :: (a -> a -> a) -> AllTruthy f a -> a $cfoldl1 :: forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AllTruthy f a -> a foldr1 :: (a -> a -> a) -> AllTruthy f a -> a $cfoldr1 :: forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AllTruthy f a -> a foldl' :: (b -> a -> b) -> b -> AllTruthy f a -> b $cfoldl' :: forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AllTruthy f a -> b foldl :: (b -> a -> b) -> b -> AllTruthy f a -> b $cfoldl :: forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AllTruthy f a -> b foldr' :: (a -> b -> b) -> b -> AllTruthy f a -> b $cfoldr' :: forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AllTruthy f a -> b foldr :: (a -> b -> b) -> b -> AllTruthy f a -> b $cfoldr :: forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AllTruthy f a -> b foldMap' :: (a -> m) -> AllTruthy f a -> m $cfoldMap' :: forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AllTruthy f a -> m foldMap :: (a -> m) -> AllTruthy f a -> m $cfoldMap :: forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AllTruthy f a -> m fold :: AllTruthy f m -> m $cfold :: forall (f :: * -> *) m. (Foldable f, Monoid m) => AllTruthy f m -> m Foldable, Functor (AllTruthy f) Foldable (AllTruthy f) Functor (AllTruthy f) -> Foldable (AllTruthy f) -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> AllTruthy f a -> f (AllTruthy f b)) -> (forall (f :: * -> *) a. Applicative f => AllTruthy f (f a) -> f (AllTruthy f a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> AllTruthy f a -> m (AllTruthy f b)) -> (forall (m :: * -> *) a. Monad m => AllTruthy f (m a) -> m (AllTruthy f a)) -> Traversable (AllTruthy f) (a -> f b) -> AllTruthy f a -> f (AllTruthy f b) 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 (f :: * -> *). Traversable f => Functor (AllTruthy f) forall (f :: * -> *). Traversable f => Foldable (AllTruthy f) forall (f :: * -> *) (m :: * -> *) a. (Traversable f, Monad m) => AllTruthy f (m a) -> m (AllTruthy f a) forall (f :: * -> *) (f :: * -> *) a. (Traversable f, Applicative f) => AllTruthy f (f a) -> f (AllTruthy f a) forall (f :: * -> *) (m :: * -> *) a b. (Traversable f, Monad m) => (a -> m b) -> AllTruthy f a -> m (AllTruthy f b) forall (f :: * -> *) (f :: * -> *) a b. (Traversable f, Applicative f) => (a -> f b) -> AllTruthy f a -> f (AllTruthy f b) forall (m :: * -> *) a. Monad m => AllTruthy f (m a) -> m (AllTruthy f a) forall (f :: * -> *) a. Applicative f => AllTruthy f (f a) -> f (AllTruthy f a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> AllTruthy f a -> m (AllTruthy f b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> AllTruthy f a -> f (AllTruthy f b) sequence :: AllTruthy f (m a) -> m (AllTruthy f a) $csequence :: forall (f :: * -> *) (m :: * -> *) a. (Traversable f, Monad m) => AllTruthy f (m a) -> m (AllTruthy f a) mapM :: (a -> m b) -> AllTruthy f a -> m (AllTruthy f b) $cmapM :: forall (f :: * -> *) (m :: * -> *) a b. (Traversable f, Monad m) => (a -> m b) -> AllTruthy f a -> m (AllTruthy f b) sequenceA :: AllTruthy f (f a) -> f (AllTruthy f a) $csequenceA :: forall (f :: * -> *) (f :: * -> *) a. (Traversable f, Applicative f) => AllTruthy f (f a) -> f (AllTruthy f a) traverse :: (a -> f b) -> AllTruthy f a -> f (AllTruthy f b) $ctraverse :: forall (f :: * -> *) (f :: * -> *) a b. (Traversable f, Applicative f) => (a -> f b) -> AllTruthy f a -> f (AllTruthy f b) $cp2Traversable :: forall (f :: * -> *). Traversable f => Foldable (AllTruthy f) $cp1Traversable :: forall (f :: * -> *). Traversable f => Functor (AllTruthy f) Traversable) instance (Functor f, Foldable f, Truthy x) => Truthy (AllTruthy f x) where type BooleanRep (AllTruthy f x) = BooleanRep x truthy :: AllTruthy f x -> BooleanRep (AllTruthy f x) truthy (AllTruthy f x xs) = (BooleanRep x -> BooleanRep x -> BooleanRep x) -> BooleanRep x -> f (BooleanRep x) -> BooleanRep x forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr BooleanRep x -> BooleanRep x -> BooleanRep x forall b. Boolean b => b -> b -> b (&&*) BooleanRep x forall b. Boolean b => b true (f (BooleanRep x) -> BooleanRep x) -> f (BooleanRep x) -> BooleanRep x forall a b. (a -> b) -> a -> b $ x -> BooleanRep x forall b. Truthy b => b -> BooleanRep b truthy (x -> BooleanRep x) -> f x -> f (BooleanRep x) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> f x xs newtype AnyTrue f x = AnyTrue { AnyTrue f x -> f x unAnyTrue :: f x } deriving (Int -> AnyTrue f x -> ShowS [AnyTrue f x] -> ShowS AnyTrue f x -> String (Int -> AnyTrue f x -> ShowS) -> (AnyTrue f x -> String) -> ([AnyTrue f x] -> ShowS) -> Show (AnyTrue f x) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall (f :: * -> *) x. Show (f x) => Int -> AnyTrue f x -> ShowS forall (f :: * -> *) x. Show (f x) => [AnyTrue f x] -> ShowS forall (f :: * -> *) x. Show (f x) => AnyTrue f x -> String showList :: [AnyTrue f x] -> ShowS $cshowList :: forall (f :: * -> *) x. Show (f x) => [AnyTrue f x] -> ShowS show :: AnyTrue f x -> String $cshow :: forall (f :: * -> *) x. Show (f x) => AnyTrue f x -> String showsPrec :: Int -> AnyTrue f x -> ShowS $cshowsPrec :: forall (f :: * -> *) x. Show (f x) => Int -> AnyTrue f x -> ShowS Show, AnyTrue f x -> AnyTrue f x -> Bool (AnyTrue f x -> AnyTrue f x -> Bool) -> (AnyTrue f x -> AnyTrue f x -> Bool) -> Eq (AnyTrue f x) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall (f :: * -> *) x. Eq (f x) => AnyTrue f x -> AnyTrue f x -> Bool /= :: AnyTrue f x -> AnyTrue f x -> Bool $c/= :: forall (f :: * -> *) x. Eq (f x) => AnyTrue f x -> AnyTrue f x -> Bool == :: AnyTrue f x -> AnyTrue f x -> Bool $c== :: forall (f :: * -> *) x. Eq (f x) => AnyTrue f x -> AnyTrue f x -> Bool Eq, Eq (AnyTrue f x) Eq (AnyTrue f x) -> (AnyTrue f x -> AnyTrue f x -> Ordering) -> (AnyTrue f x -> AnyTrue f x -> Bool) -> (AnyTrue f x -> AnyTrue f x -> Bool) -> (AnyTrue f x -> AnyTrue f x -> Bool) -> (AnyTrue f x -> AnyTrue f x -> Bool) -> (AnyTrue f x -> AnyTrue f x -> AnyTrue f x) -> (AnyTrue f x -> AnyTrue f x -> AnyTrue f x) -> Ord (AnyTrue f x) AnyTrue f x -> AnyTrue f x -> Bool AnyTrue f x -> AnyTrue f x -> Ordering AnyTrue f x -> AnyTrue f x -> AnyTrue f x forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall (f :: * -> *) x. Ord (f x) => Eq (AnyTrue f x) forall (f :: * -> *) x. Ord (f x) => AnyTrue f x -> AnyTrue f x -> Bool forall (f :: * -> *) x. Ord (f x) => AnyTrue f x -> AnyTrue f x -> Ordering forall (f :: * -> *) x. Ord (f x) => AnyTrue f x -> AnyTrue f x -> AnyTrue f x min :: AnyTrue f x -> AnyTrue f x -> AnyTrue f x $cmin :: forall (f :: * -> *) x. Ord (f x) => AnyTrue f x -> AnyTrue f x -> AnyTrue f x max :: AnyTrue f x -> AnyTrue f x -> AnyTrue f x $cmax :: forall (f :: * -> *) x. Ord (f x) => AnyTrue f x -> AnyTrue f x -> AnyTrue f x >= :: AnyTrue f x -> AnyTrue f x -> Bool $c>= :: forall (f :: * -> *) x. Ord (f x) => AnyTrue f x -> AnyTrue f x -> Bool > :: AnyTrue f x -> AnyTrue f x -> Bool $c> :: forall (f :: * -> *) x. Ord (f x) => AnyTrue f x -> AnyTrue f x -> Bool <= :: AnyTrue f x -> AnyTrue f x -> Bool $c<= :: forall (f :: * -> *) x. Ord (f x) => AnyTrue f x -> AnyTrue f x -> Bool < :: AnyTrue f x -> AnyTrue f x -> Bool $c< :: forall (f :: * -> *) x. Ord (f x) => AnyTrue f x -> AnyTrue f x -> Bool compare :: AnyTrue f x -> AnyTrue f x -> Ordering $ccompare :: forall (f :: * -> *) x. Ord (f x) => AnyTrue f x -> AnyTrue f x -> Ordering $cp1Ord :: forall (f :: * -> *) x. Ord (f x) => Eq (AnyTrue f x) Ord, a -> AnyTrue f b -> AnyTrue f a (a -> b) -> AnyTrue f a -> AnyTrue f b (forall a b. (a -> b) -> AnyTrue f a -> AnyTrue f b) -> (forall a b. a -> AnyTrue f b -> AnyTrue f a) -> Functor (AnyTrue f) forall a b. a -> AnyTrue f b -> AnyTrue f a forall a b. (a -> b) -> AnyTrue f a -> AnyTrue f b forall (f :: * -> *) a b. Functor f => a -> AnyTrue f b -> AnyTrue f a forall (f :: * -> *) a b. Functor f => (a -> b) -> AnyTrue f a -> AnyTrue f b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> AnyTrue f b -> AnyTrue f a $c<$ :: forall (f :: * -> *) a b. Functor f => a -> AnyTrue f b -> AnyTrue f a fmap :: (a -> b) -> AnyTrue f a -> AnyTrue f b $cfmap :: forall (f :: * -> *) a b. Functor f => (a -> b) -> AnyTrue f a -> AnyTrue f b Functor, a -> AnyTrue f a -> Bool AnyTrue f m -> m AnyTrue f a -> [a] AnyTrue f a -> Bool AnyTrue f a -> Int AnyTrue f a -> a AnyTrue f a -> a AnyTrue f a -> a AnyTrue f a -> a (a -> m) -> AnyTrue f a -> m (a -> m) -> AnyTrue f a -> m (a -> b -> b) -> b -> AnyTrue f a -> b (a -> b -> b) -> b -> AnyTrue f a -> b (b -> a -> b) -> b -> AnyTrue f a -> b (b -> a -> b) -> b -> AnyTrue f a -> b (a -> a -> a) -> AnyTrue f a -> a (a -> a -> a) -> AnyTrue f a -> a (forall m. Monoid m => AnyTrue f m -> m) -> (forall m a. Monoid m => (a -> m) -> AnyTrue f a -> m) -> (forall m a. Monoid m => (a -> m) -> AnyTrue f a -> m) -> (forall a b. (a -> b -> b) -> b -> AnyTrue f a -> b) -> (forall a b. (a -> b -> b) -> b -> AnyTrue f a -> b) -> (forall b a. (b -> a -> b) -> b -> AnyTrue f a -> b) -> (forall b a. (b -> a -> b) -> b -> AnyTrue f a -> b) -> (forall a. (a -> a -> a) -> AnyTrue f a -> a) -> (forall a. (a -> a -> a) -> AnyTrue f a -> a) -> (forall a. AnyTrue f a -> [a]) -> (forall a. AnyTrue f a -> Bool) -> (forall a. AnyTrue f a -> Int) -> (forall a. Eq a => a -> AnyTrue f a -> Bool) -> (forall a. Ord a => AnyTrue f a -> a) -> (forall a. Ord a => AnyTrue f a -> a) -> (forall a. Num a => AnyTrue f a -> a) -> (forall a. Num a => AnyTrue f a -> a) -> Foldable (AnyTrue f) forall a. Eq a => a -> AnyTrue f a -> Bool forall a. Num a => AnyTrue f a -> a forall a. Ord a => AnyTrue f a -> a forall m. Monoid m => AnyTrue f m -> m forall a. AnyTrue f a -> Bool forall a. AnyTrue f a -> Int forall a. AnyTrue f a -> [a] forall a. (a -> a -> a) -> AnyTrue f a -> a forall m a. Monoid m => (a -> m) -> AnyTrue f a -> m forall b a. (b -> a -> b) -> b -> AnyTrue f a -> b forall a b. (a -> b -> b) -> b -> AnyTrue f a -> b forall (f :: * -> *) a. (Foldable f, Eq a) => a -> AnyTrue f a -> Bool forall (f :: * -> *) a. (Foldable f, Num a) => AnyTrue f a -> a forall (f :: * -> *) a. (Foldable f, Ord a) => AnyTrue f a -> a forall (f :: * -> *) m. (Foldable f, Monoid m) => AnyTrue f m -> m forall (f :: * -> *) a. Foldable f => AnyTrue f a -> Bool forall (f :: * -> *) a. Foldable f => AnyTrue f a -> Int forall (f :: * -> *) a. Foldable f => AnyTrue f a -> [a] forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AnyTrue f a -> a forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AnyTrue f a -> m forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AnyTrue f a -> b forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AnyTrue f 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 product :: AnyTrue f a -> a $cproduct :: forall (f :: * -> *) a. (Foldable f, Num a) => AnyTrue f a -> a sum :: AnyTrue f a -> a $csum :: forall (f :: * -> *) a. (Foldable f, Num a) => AnyTrue f a -> a minimum :: AnyTrue f a -> a $cminimum :: forall (f :: * -> *) a. (Foldable f, Ord a) => AnyTrue f a -> a maximum :: AnyTrue f a -> a $cmaximum :: forall (f :: * -> *) a. (Foldable f, Ord a) => AnyTrue f a -> a elem :: a -> AnyTrue f a -> Bool $celem :: forall (f :: * -> *) a. (Foldable f, Eq a) => a -> AnyTrue f a -> Bool length :: AnyTrue f a -> Int $clength :: forall (f :: * -> *) a. Foldable f => AnyTrue f a -> Int null :: AnyTrue f a -> Bool $cnull :: forall (f :: * -> *) a. Foldable f => AnyTrue f a -> Bool toList :: AnyTrue f a -> [a] $ctoList :: forall (f :: * -> *) a. Foldable f => AnyTrue f a -> [a] foldl1 :: (a -> a -> a) -> AnyTrue f a -> a $cfoldl1 :: forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AnyTrue f a -> a foldr1 :: (a -> a -> a) -> AnyTrue f a -> a $cfoldr1 :: forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AnyTrue f a -> a foldl' :: (b -> a -> b) -> b -> AnyTrue f a -> b $cfoldl' :: forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AnyTrue f a -> b foldl :: (b -> a -> b) -> b -> AnyTrue f a -> b $cfoldl :: forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AnyTrue f a -> b foldr' :: (a -> b -> b) -> b -> AnyTrue f a -> b $cfoldr' :: forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AnyTrue f a -> b foldr :: (a -> b -> b) -> b -> AnyTrue f a -> b $cfoldr :: forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AnyTrue f a -> b foldMap' :: (a -> m) -> AnyTrue f a -> m $cfoldMap' :: forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AnyTrue f a -> m foldMap :: (a -> m) -> AnyTrue f a -> m $cfoldMap :: forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AnyTrue f a -> m fold :: AnyTrue f m -> m $cfold :: forall (f :: * -> *) m. (Foldable f, Monoid m) => AnyTrue f m -> m Foldable, Functor (AnyTrue f) Foldable (AnyTrue f) Functor (AnyTrue f) -> Foldable (AnyTrue f) -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> AnyTrue f a -> f (AnyTrue f b)) -> (forall (f :: * -> *) a. Applicative f => AnyTrue f (f a) -> f (AnyTrue f a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> AnyTrue f a -> m (AnyTrue f b)) -> (forall (m :: * -> *) a. Monad m => AnyTrue f (m a) -> m (AnyTrue f a)) -> Traversable (AnyTrue f) (a -> f b) -> AnyTrue f a -> f (AnyTrue f b) 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 (f :: * -> *). Traversable f => Functor (AnyTrue f) forall (f :: * -> *). Traversable f => Foldable (AnyTrue f) forall (f :: * -> *) (m :: * -> *) a. (Traversable f, Monad m) => AnyTrue f (m a) -> m (AnyTrue f a) forall (f :: * -> *) (f :: * -> *) a. (Traversable f, Applicative f) => AnyTrue f (f a) -> f (AnyTrue f a) forall (f :: * -> *) (m :: * -> *) a b. (Traversable f, Monad m) => (a -> m b) -> AnyTrue f a -> m (AnyTrue f b) forall (f :: * -> *) (f :: * -> *) a b. (Traversable f, Applicative f) => (a -> f b) -> AnyTrue f a -> f (AnyTrue f b) forall (m :: * -> *) a. Monad m => AnyTrue f (m a) -> m (AnyTrue f a) forall (f :: * -> *) a. Applicative f => AnyTrue f (f a) -> f (AnyTrue f a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> AnyTrue f a -> m (AnyTrue f b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> AnyTrue f a -> f (AnyTrue f b) sequence :: AnyTrue f (m a) -> m (AnyTrue f a) $csequence :: forall (f :: * -> *) (m :: * -> *) a. (Traversable f, Monad m) => AnyTrue f (m a) -> m (AnyTrue f a) mapM :: (a -> m b) -> AnyTrue f a -> m (AnyTrue f b) $cmapM :: forall (f :: * -> *) (m :: * -> *) a b. (Traversable f, Monad m) => (a -> m b) -> AnyTrue f a -> m (AnyTrue f b) sequenceA :: AnyTrue f (f a) -> f (AnyTrue f a) $csequenceA :: forall (f :: * -> *) (f :: * -> *) a. (Traversable f, Applicative f) => AnyTrue f (f a) -> f (AnyTrue f a) traverse :: (a -> f b) -> AnyTrue f a -> f (AnyTrue f b) $ctraverse :: forall (f :: * -> *) (f :: * -> *) a b. (Traversable f, Applicative f) => (a -> f b) -> AnyTrue f a -> f (AnyTrue f b) $cp2Traversable :: forall (f :: * -> *). Traversable f => Foldable (AnyTrue f) $cp1Traversable :: forall (f :: * -> *). Traversable f => Functor (AnyTrue f) Traversable) instance (Foldable f, Boolean x) => Truthy (AnyTrue f x) where type BooleanRep (AnyTrue f x) = x truthy :: AnyTrue f x -> BooleanRep (AnyTrue f x) truthy (AnyTrue f x xs) = (x -> x -> x) -> x -> f x -> x forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr x -> x -> x forall b. Boolean b => b -> b -> b (||*) x forall b. Boolean b => b false f x xs newtype AnyTruthy f x = AnyTruthy { AnyTruthy f x -> f x unAnyTruthy :: f x } deriving (Int -> AnyTruthy f x -> ShowS [AnyTruthy f x] -> ShowS AnyTruthy f x -> String (Int -> AnyTruthy f x -> ShowS) -> (AnyTruthy f x -> String) -> ([AnyTruthy f x] -> ShowS) -> Show (AnyTruthy f x) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall (f :: * -> *) x. Show (f x) => Int -> AnyTruthy f x -> ShowS forall (f :: * -> *) x. Show (f x) => [AnyTruthy f x] -> ShowS forall (f :: * -> *) x. Show (f x) => AnyTruthy f x -> String showList :: [AnyTruthy f x] -> ShowS $cshowList :: forall (f :: * -> *) x. Show (f x) => [AnyTruthy f x] -> ShowS show :: AnyTruthy f x -> String $cshow :: forall (f :: * -> *) x. Show (f x) => AnyTruthy f x -> String showsPrec :: Int -> AnyTruthy f x -> ShowS $cshowsPrec :: forall (f :: * -> *) x. Show (f x) => Int -> AnyTruthy f x -> ShowS Show, AnyTruthy f x -> AnyTruthy f x -> Bool (AnyTruthy f x -> AnyTruthy f x -> Bool) -> (AnyTruthy f x -> AnyTruthy f x -> Bool) -> Eq (AnyTruthy f x) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall (f :: * -> *) x. Eq (f x) => AnyTruthy f x -> AnyTruthy f x -> Bool /= :: AnyTruthy f x -> AnyTruthy f x -> Bool $c/= :: forall (f :: * -> *) x. Eq (f x) => AnyTruthy f x -> AnyTruthy f x -> Bool == :: AnyTruthy f x -> AnyTruthy f x -> Bool $c== :: forall (f :: * -> *) x. Eq (f x) => AnyTruthy f x -> AnyTruthy f x -> Bool Eq, Eq (AnyTruthy f x) Eq (AnyTruthy f x) -> (AnyTruthy f x -> AnyTruthy f x -> Ordering) -> (AnyTruthy f x -> AnyTruthy f x -> Bool) -> (AnyTruthy f x -> AnyTruthy f x -> Bool) -> (AnyTruthy f x -> AnyTruthy f x -> Bool) -> (AnyTruthy f x -> AnyTruthy f x -> Bool) -> (AnyTruthy f x -> AnyTruthy f x -> AnyTruthy f x) -> (AnyTruthy f x -> AnyTruthy f x -> AnyTruthy f x) -> Ord (AnyTruthy f x) AnyTruthy f x -> AnyTruthy f x -> Bool AnyTruthy f x -> AnyTruthy f x -> Ordering AnyTruthy f x -> AnyTruthy f x -> AnyTruthy f x forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall (f :: * -> *) x. Ord (f x) => Eq (AnyTruthy f x) forall (f :: * -> *) x. Ord (f x) => AnyTruthy f x -> AnyTruthy f x -> Bool forall (f :: * -> *) x. Ord (f x) => AnyTruthy f x -> AnyTruthy f x -> Ordering forall (f :: * -> *) x. Ord (f x) => AnyTruthy f x -> AnyTruthy f x -> AnyTruthy f x min :: AnyTruthy f x -> AnyTruthy f x -> AnyTruthy f x $cmin :: forall (f :: * -> *) x. Ord (f x) => AnyTruthy f x -> AnyTruthy f x -> AnyTruthy f x max :: AnyTruthy f x -> AnyTruthy f x -> AnyTruthy f x $cmax :: forall (f :: * -> *) x. Ord (f x) => AnyTruthy f x -> AnyTruthy f x -> AnyTruthy f x >= :: AnyTruthy f x -> AnyTruthy f x -> Bool $c>= :: forall (f :: * -> *) x. Ord (f x) => AnyTruthy f x -> AnyTruthy f x -> Bool > :: AnyTruthy f x -> AnyTruthy f x -> Bool $c> :: forall (f :: * -> *) x. Ord (f x) => AnyTruthy f x -> AnyTruthy f x -> Bool <= :: AnyTruthy f x -> AnyTruthy f x -> Bool $c<= :: forall (f :: * -> *) x. Ord (f x) => AnyTruthy f x -> AnyTruthy f x -> Bool < :: AnyTruthy f x -> AnyTruthy f x -> Bool $c< :: forall (f :: * -> *) x. Ord (f x) => AnyTruthy f x -> AnyTruthy f x -> Bool compare :: AnyTruthy f x -> AnyTruthy f x -> Ordering $ccompare :: forall (f :: * -> *) x. Ord (f x) => AnyTruthy f x -> AnyTruthy f x -> Ordering $cp1Ord :: forall (f :: * -> *) x. Ord (f x) => Eq (AnyTruthy f x) Ord, a -> AnyTruthy f b -> AnyTruthy f a (a -> b) -> AnyTruthy f a -> AnyTruthy f b (forall a b. (a -> b) -> AnyTruthy f a -> AnyTruthy f b) -> (forall a b. a -> AnyTruthy f b -> AnyTruthy f a) -> Functor (AnyTruthy f) forall a b. a -> AnyTruthy f b -> AnyTruthy f a forall a b. (a -> b) -> AnyTruthy f a -> AnyTruthy f b forall (f :: * -> *) a b. Functor f => a -> AnyTruthy f b -> AnyTruthy f a forall (f :: * -> *) a b. Functor f => (a -> b) -> AnyTruthy f a -> AnyTruthy f b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> AnyTruthy f b -> AnyTruthy f a $c<$ :: forall (f :: * -> *) a b. Functor f => a -> AnyTruthy f b -> AnyTruthy f a fmap :: (a -> b) -> AnyTruthy f a -> AnyTruthy f b $cfmap :: forall (f :: * -> *) a b. Functor f => (a -> b) -> AnyTruthy f a -> AnyTruthy f b Functor, a -> AnyTruthy f a -> Bool AnyTruthy f m -> m AnyTruthy f a -> [a] AnyTruthy f a -> Bool AnyTruthy f a -> Int AnyTruthy f a -> a AnyTruthy f a -> a AnyTruthy f a -> a AnyTruthy f a -> a (a -> m) -> AnyTruthy f a -> m (a -> m) -> AnyTruthy f a -> m (a -> b -> b) -> b -> AnyTruthy f a -> b (a -> b -> b) -> b -> AnyTruthy f a -> b (b -> a -> b) -> b -> AnyTruthy f a -> b (b -> a -> b) -> b -> AnyTruthy f a -> b (a -> a -> a) -> AnyTruthy f a -> a (a -> a -> a) -> AnyTruthy f a -> a (forall m. Monoid m => AnyTruthy f m -> m) -> (forall m a. Monoid m => (a -> m) -> AnyTruthy f a -> m) -> (forall m a. Monoid m => (a -> m) -> AnyTruthy f a -> m) -> (forall a b. (a -> b -> b) -> b -> AnyTruthy f a -> b) -> (forall a b. (a -> b -> b) -> b -> AnyTruthy f a -> b) -> (forall b a. (b -> a -> b) -> b -> AnyTruthy f a -> b) -> (forall b a. (b -> a -> b) -> b -> AnyTruthy f a -> b) -> (forall a. (a -> a -> a) -> AnyTruthy f a -> a) -> (forall a. (a -> a -> a) -> AnyTruthy f a -> a) -> (forall a. AnyTruthy f a -> [a]) -> (forall a. AnyTruthy f a -> Bool) -> (forall a. AnyTruthy f a -> Int) -> (forall a. Eq a => a -> AnyTruthy f a -> Bool) -> (forall a. Ord a => AnyTruthy f a -> a) -> (forall a. Ord a => AnyTruthy f a -> a) -> (forall a. Num a => AnyTruthy f a -> a) -> (forall a. Num a => AnyTruthy f a -> a) -> Foldable (AnyTruthy f) forall a. Eq a => a -> AnyTruthy f a -> Bool forall a. Num a => AnyTruthy f a -> a forall a. Ord a => AnyTruthy f a -> a forall m. Monoid m => AnyTruthy f m -> m forall a. AnyTruthy f a -> Bool forall a. AnyTruthy f a -> Int forall a. AnyTruthy f a -> [a] forall a. (a -> a -> a) -> AnyTruthy f a -> a forall m a. Monoid m => (a -> m) -> AnyTruthy f a -> m forall b a. (b -> a -> b) -> b -> AnyTruthy f a -> b forall a b. (a -> b -> b) -> b -> AnyTruthy f a -> b forall (f :: * -> *) a. (Foldable f, Eq a) => a -> AnyTruthy f a -> Bool forall (f :: * -> *) a. (Foldable f, Num a) => AnyTruthy f a -> a forall (f :: * -> *) a. (Foldable f, Ord a) => AnyTruthy f a -> a forall (f :: * -> *) m. (Foldable f, Monoid m) => AnyTruthy f m -> m forall (f :: * -> *) a. Foldable f => AnyTruthy f a -> Bool forall (f :: * -> *) a. Foldable f => AnyTruthy f a -> Int forall (f :: * -> *) a. Foldable f => AnyTruthy f a -> [a] forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AnyTruthy f a -> a forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AnyTruthy f a -> m forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AnyTruthy f a -> b forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AnyTruthy f 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 product :: AnyTruthy f a -> a $cproduct :: forall (f :: * -> *) a. (Foldable f, Num a) => AnyTruthy f a -> a sum :: AnyTruthy f a -> a $csum :: forall (f :: * -> *) a. (Foldable f, Num a) => AnyTruthy f a -> a minimum :: AnyTruthy f a -> a $cminimum :: forall (f :: * -> *) a. (Foldable f, Ord a) => AnyTruthy f a -> a maximum :: AnyTruthy f a -> a $cmaximum :: forall (f :: * -> *) a. (Foldable f, Ord a) => AnyTruthy f a -> a elem :: a -> AnyTruthy f a -> Bool $celem :: forall (f :: * -> *) a. (Foldable f, Eq a) => a -> AnyTruthy f a -> Bool length :: AnyTruthy f a -> Int $clength :: forall (f :: * -> *) a. Foldable f => AnyTruthy f a -> Int null :: AnyTruthy f a -> Bool $cnull :: forall (f :: * -> *) a. Foldable f => AnyTruthy f a -> Bool toList :: AnyTruthy f a -> [a] $ctoList :: forall (f :: * -> *) a. Foldable f => AnyTruthy f a -> [a] foldl1 :: (a -> a -> a) -> AnyTruthy f a -> a $cfoldl1 :: forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AnyTruthy f a -> a foldr1 :: (a -> a -> a) -> AnyTruthy f a -> a $cfoldr1 :: forall (f :: * -> *) a. Foldable f => (a -> a -> a) -> AnyTruthy f a -> a foldl' :: (b -> a -> b) -> b -> AnyTruthy f a -> b $cfoldl' :: forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AnyTruthy f a -> b foldl :: (b -> a -> b) -> b -> AnyTruthy f a -> b $cfoldl :: forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> AnyTruthy f a -> b foldr' :: (a -> b -> b) -> b -> AnyTruthy f a -> b $cfoldr' :: forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AnyTruthy f a -> b foldr :: (a -> b -> b) -> b -> AnyTruthy f a -> b $cfoldr :: forall (f :: * -> *) a b. Foldable f => (a -> b -> b) -> b -> AnyTruthy f a -> b foldMap' :: (a -> m) -> AnyTruthy f a -> m $cfoldMap' :: forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AnyTruthy f a -> m foldMap :: (a -> m) -> AnyTruthy f a -> m $cfoldMap :: forall (f :: * -> *) m a. (Foldable f, Monoid m) => (a -> m) -> AnyTruthy f a -> m fold :: AnyTruthy f m -> m $cfold :: forall (f :: * -> *) m. (Foldable f, Monoid m) => AnyTruthy f m -> m Foldable, Functor (AnyTruthy f) Foldable (AnyTruthy f) Functor (AnyTruthy f) -> Foldable (AnyTruthy f) -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> AnyTruthy f a -> f (AnyTruthy f b)) -> (forall (f :: * -> *) a. Applicative f => AnyTruthy f (f a) -> f (AnyTruthy f a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> AnyTruthy f a -> m (AnyTruthy f b)) -> (forall (m :: * -> *) a. Monad m => AnyTruthy f (m a) -> m (AnyTruthy f a)) -> Traversable (AnyTruthy f) (a -> f b) -> AnyTruthy f a -> f (AnyTruthy f b) 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 (f :: * -> *). Traversable f => Functor (AnyTruthy f) forall (f :: * -> *). Traversable f => Foldable (AnyTruthy f) forall (f :: * -> *) (m :: * -> *) a. (Traversable f, Monad m) => AnyTruthy f (m a) -> m (AnyTruthy f a) forall (f :: * -> *) (f :: * -> *) a. (Traversable f, Applicative f) => AnyTruthy f (f a) -> f (AnyTruthy f a) forall (f :: * -> *) (m :: * -> *) a b. (Traversable f, Monad m) => (a -> m b) -> AnyTruthy f a -> m (AnyTruthy f b) forall (f :: * -> *) (f :: * -> *) a b. (Traversable f, Applicative f) => (a -> f b) -> AnyTruthy f a -> f (AnyTruthy f b) forall (m :: * -> *) a. Monad m => AnyTruthy f (m a) -> m (AnyTruthy f a) forall (f :: * -> *) a. Applicative f => AnyTruthy f (f a) -> f (AnyTruthy f a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> AnyTruthy f a -> m (AnyTruthy f b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> AnyTruthy f a -> f (AnyTruthy f b) sequence :: AnyTruthy f (m a) -> m (AnyTruthy f a) $csequence :: forall (f :: * -> *) (m :: * -> *) a. (Traversable f, Monad m) => AnyTruthy f (m a) -> m (AnyTruthy f a) mapM :: (a -> m b) -> AnyTruthy f a -> m (AnyTruthy f b) $cmapM :: forall (f :: * -> *) (m :: * -> *) a b. (Traversable f, Monad m) => (a -> m b) -> AnyTruthy f a -> m (AnyTruthy f b) sequenceA :: AnyTruthy f (f a) -> f (AnyTruthy f a) $csequenceA :: forall (f :: * -> *) (f :: * -> *) a. (Traversable f, Applicative f) => AnyTruthy f (f a) -> f (AnyTruthy f a) traverse :: (a -> f b) -> AnyTruthy f a -> f (AnyTruthy f b) $ctraverse :: forall (f :: * -> *) (f :: * -> *) a b. (Traversable f, Applicative f) => (a -> f b) -> AnyTruthy f a -> f (AnyTruthy f b) $cp2Traversable :: forall (f :: * -> *). Traversable f => Foldable (AnyTruthy f) $cp1Traversable :: forall (f :: * -> *). Traversable f => Functor (AnyTruthy f) Traversable) instance (Functor f, Foldable f, Truthy x) => Truthy (AnyTruthy f x) where type BooleanRep (AnyTruthy f x) = BooleanRep x truthy :: AnyTruthy f x -> BooleanRep (AnyTruthy f x) truthy (AnyTruthy f x xs) = (BooleanRep x -> BooleanRep x -> BooleanRep x) -> BooleanRep x -> f (BooleanRep x) -> BooleanRep x forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr BooleanRep x -> BooleanRep x -> BooleanRep x forall b. Boolean b => b -> b -> b (||*) BooleanRep x forall b. Boolean b => b false (f (BooleanRep x) -> BooleanRep x) -> f (BooleanRep x) -> BooleanRep x forall a b. (a -> b) -> a -> b $ x -> BooleanRep x forall b. Truthy b => b -> BooleanRep b truthy (x -> BooleanRep x) -> f x -> f (BooleanRep x) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> f x xs newtype Contrary b = Contrary { Contrary b -> b unContrary :: b } deriving (Int -> Contrary b -> ShowS [Contrary b] -> ShowS Contrary b -> String (Int -> Contrary b -> ShowS) -> (Contrary b -> String) -> ([Contrary b] -> ShowS) -> Show (Contrary b) forall b. Show b => Int -> Contrary b -> ShowS forall b. Show b => [Contrary b] -> ShowS forall b. Show b => Contrary b -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Contrary b] -> ShowS $cshowList :: forall b. Show b => [Contrary b] -> ShowS show :: Contrary b -> String $cshow :: forall b. Show b => Contrary b -> String showsPrec :: Int -> Contrary b -> ShowS $cshowsPrec :: forall b. Show b => Int -> Contrary b -> ShowS Show, Contrary b -> Contrary b -> Bool (Contrary b -> Contrary b -> Bool) -> (Contrary b -> Contrary b -> Bool) -> Eq (Contrary b) forall b. Eq b => Contrary b -> Contrary b -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Contrary b -> Contrary b -> Bool $c/= :: forall b. Eq b => Contrary b -> Contrary b -> Bool == :: Contrary b -> Contrary b -> Bool $c== :: forall b. Eq b => Contrary b -> Contrary b -> Bool Eq, Eq (Contrary b) Eq (Contrary b) -> (Contrary b -> Contrary b -> Ordering) -> (Contrary b -> Contrary b -> Bool) -> (Contrary b -> Contrary b -> Bool) -> (Contrary b -> Contrary b -> Bool) -> (Contrary b -> Contrary b -> Bool) -> (Contrary b -> Contrary b -> Contrary b) -> (Contrary b -> Contrary b -> Contrary b) -> Ord (Contrary b) Contrary b -> Contrary b -> Bool Contrary b -> Contrary b -> Ordering Contrary b -> Contrary b -> Contrary b forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall b. Ord b => Eq (Contrary b) forall b. Ord b => Contrary b -> Contrary b -> Bool forall b. Ord b => Contrary b -> Contrary b -> Ordering forall b. Ord b => Contrary b -> Contrary b -> Contrary b min :: Contrary b -> Contrary b -> Contrary b $cmin :: forall b. Ord b => Contrary b -> Contrary b -> Contrary b max :: Contrary b -> Contrary b -> Contrary b $cmax :: forall b. Ord b => Contrary b -> Contrary b -> Contrary b >= :: Contrary b -> Contrary b -> Bool $c>= :: forall b. Ord b => Contrary b -> Contrary b -> Bool > :: Contrary b -> Contrary b -> Bool $c> :: forall b. Ord b => Contrary b -> Contrary b -> Bool <= :: Contrary b -> Contrary b -> Bool $c<= :: forall b. Ord b => Contrary b -> Contrary b -> Bool < :: Contrary b -> Contrary b -> Bool $c< :: forall b. Ord b => Contrary b -> Contrary b -> Bool compare :: Contrary b -> Contrary b -> Ordering $ccompare :: forall b. Ord b => Contrary b -> Contrary b -> Ordering $cp1Ord :: forall b. Ord b => Eq (Contrary b) Ord, a -> Contrary b -> Contrary a (a -> b) -> Contrary a -> Contrary b (forall a b. (a -> b) -> Contrary a -> Contrary b) -> (forall a b. a -> Contrary b -> Contrary a) -> Functor Contrary forall a b. a -> Contrary b -> Contrary a forall a b. (a -> b) -> Contrary a -> Contrary b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> Contrary b -> Contrary a $c<$ :: forall a b. a -> Contrary b -> Contrary a fmap :: (a -> b) -> Contrary a -> Contrary b $cfmap :: forall a b. (a -> b) -> Contrary a -> Contrary b Functor, Contrary a -> Bool (a -> m) -> Contrary a -> m (a -> b -> b) -> b -> Contrary a -> b (forall m. Monoid m => Contrary m -> m) -> (forall m a. Monoid m => (a -> m) -> Contrary a -> m) -> (forall m a. Monoid m => (a -> m) -> Contrary a -> m) -> (forall a b. (a -> b -> b) -> b -> Contrary a -> b) -> (forall a b. (a -> b -> b) -> b -> Contrary a -> b) -> (forall b a. (b -> a -> b) -> b -> Contrary a -> b) -> (forall b a. (b -> a -> b) -> b -> Contrary a -> b) -> (forall a. (a -> a -> a) -> Contrary a -> a) -> (forall a. (a -> a -> a) -> Contrary a -> a) -> (forall a. Contrary a -> [a]) -> (forall a. Contrary a -> Bool) -> (forall a. Contrary a -> Int) -> (forall a. Eq a => a -> Contrary a -> Bool) -> (forall a. Ord a => Contrary a -> a) -> (forall a. Ord a => Contrary a -> a) -> (forall a. Num a => Contrary a -> a) -> (forall a. Num a => Contrary a -> a) -> Foldable Contrary forall a. Eq a => a -> Contrary a -> Bool forall a. Num a => Contrary a -> a forall a. Ord a => Contrary a -> a forall m. Monoid m => Contrary m -> m forall a. Contrary a -> Bool forall a. Contrary a -> Int forall a. Contrary a -> [a] forall a. (a -> a -> a) -> Contrary a -> a forall m a. Monoid m => (a -> m) -> Contrary a -> m forall b a. (b -> a -> b) -> b -> Contrary a -> b forall a b. (a -> b -> b) -> b -> Contrary 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 product :: Contrary a -> a $cproduct :: forall a. Num a => Contrary a -> a sum :: Contrary a -> a $csum :: forall a. Num a => Contrary a -> a minimum :: Contrary a -> a $cminimum :: forall a. Ord a => Contrary a -> a maximum :: Contrary a -> a $cmaximum :: forall a. Ord a => Contrary a -> a elem :: a -> Contrary a -> Bool $celem :: forall a. Eq a => a -> Contrary a -> Bool length :: Contrary a -> Int $clength :: forall a. Contrary a -> Int null :: Contrary a -> Bool $cnull :: forall a. Contrary a -> Bool toList :: Contrary a -> [a] $ctoList :: forall a. Contrary a -> [a] foldl1 :: (a -> a -> a) -> Contrary a -> a $cfoldl1 :: forall a. (a -> a -> a) -> Contrary a -> a foldr1 :: (a -> a -> a) -> Contrary a -> a $cfoldr1 :: forall a. (a -> a -> a) -> Contrary a -> a foldl' :: (b -> a -> b) -> b -> Contrary a -> b $cfoldl' :: forall b a. (b -> a -> b) -> b -> Contrary a -> b foldl :: (b -> a -> b) -> b -> Contrary a -> b $cfoldl :: forall b a. (b -> a -> b) -> b -> Contrary a -> b foldr' :: (a -> b -> b) -> b -> Contrary a -> b $cfoldr' :: forall a b. (a -> b -> b) -> b -> Contrary a -> b foldr :: (a -> b -> b) -> b -> Contrary a -> b $cfoldr :: forall a b. (a -> b -> b) -> b -> Contrary a -> b foldMap' :: (a -> m) -> Contrary a -> m $cfoldMap' :: forall m a. Monoid m => (a -> m) -> Contrary a -> m foldMap :: (a -> m) -> Contrary a -> m $cfoldMap :: forall m a. Monoid m => (a -> m) -> Contrary a -> m fold :: Contrary m -> m $cfold :: forall m. Monoid m => Contrary m -> m Foldable, Functor Contrary Foldable Contrary Functor Contrary -> Foldable Contrary -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> Contrary a -> f (Contrary b)) -> (forall (f :: * -> *) a. Applicative f => Contrary (f a) -> f (Contrary a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> Contrary a -> m (Contrary b)) -> (forall (m :: * -> *) a. Monad m => Contrary (m a) -> m (Contrary a)) -> Traversable Contrary (a -> f b) -> Contrary a -> f (Contrary b) 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 => Contrary (m a) -> m (Contrary a) forall (f :: * -> *) a. Applicative f => Contrary (f a) -> f (Contrary a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> Contrary a -> m (Contrary b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> Contrary a -> f (Contrary b) sequence :: Contrary (m a) -> m (Contrary a) $csequence :: forall (m :: * -> *) a. Monad m => Contrary (m a) -> m (Contrary a) mapM :: (a -> m b) -> Contrary a -> m (Contrary b) $cmapM :: forall (m :: * -> *) a b. Monad m => (a -> m b) -> Contrary a -> m (Contrary b) sequenceA :: Contrary (f a) -> f (Contrary a) $csequenceA :: forall (f :: * -> *) a. Applicative f => Contrary (f a) -> f (Contrary a) traverse :: (a -> f b) -> Contrary a -> f (Contrary b) $ctraverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> Contrary a -> f (Contrary b) $cp2Traversable :: Foldable Contrary $cp1Traversable :: Functor Contrary Traversable) instance Truthy b => Truthy (Contrary b) where type BooleanRep (Contrary b) = BooleanRep b truthy :: Contrary b -> BooleanRep (Contrary b) truthy (Contrary b b) = BooleanRep b -> BooleanRep b forall b. Boolean b => b -> b notB (BooleanRep b -> BooleanRep b) -> BooleanRep b -> BooleanRep b forall a b. (a -> b) -> a -> b $ b -> BooleanRep b forall b. Truthy b => b -> BooleanRep b truthy b b class Boolean b => BooleanIf b where bIf :: b -> a -> a -> a instance BooleanIf Bool where bIf :: Bool -> a -> a -> a bIf Bool a a b a c = if Bool a then a b else a c boolean :: BooleanIf b => a -> a -> b -> a boolean :: a -> a -> b -> a boolean a a a b b c = b -> a -> a -> a forall b a. BooleanIf b => b -> a -> a -> a bIf b c a a a b