-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Rage against the quantification
--
-- Data types and typeclasses to deal with universally and existentially
-- quantified types
@package quantification
@version 0.7.0
module Data.Binary.Lifted
class Binary1 f
liftPut :: Binary1 f => (a -> Put) -> f a -> Put
liftGet :: Binary1 f => Get a -> Get (f a)
put1 :: (Binary1 f, Binary a) => f a -> Put
get1 :: (Binary1 f, Binary a) => Get (f a)
instance Data.Binary.Lifted.Binary1 []
instance Data.Binary.Lifted.Binary1 GHC.Maybe.Maybe
instance (Data.Binary.Lifted.Binary1 f, Data.Binary.Lifted.Binary1 g) => Data.Binary.Lifted.Binary1 (Data.Functor.Compose.Compose f g)
module Data.Monoid.Lifted
-- | Laws for this typeclass:
--
--
class Semigroup1 f
liftAppend :: Semigroup1 f => (a -> a -> a) -> f a -> f a -> f a
-- | Laws for this typeclass:
--
--
class Semigroup1 f => Monoid1 f
liftEmpty :: Monoid1 f => a -> f a
append1 :: (Semigroup1 f, Semigroup a) => f a -> f a -> f a
empty1 :: (Monoid1 f, Monoid a) => f a
instance (Data.Monoid.Lifted.Monoid1 f, Data.Monoid.Lifted.Monoid1 g) => Data.Monoid.Lifted.Monoid1 (Data.Functor.Compose.Compose f g)
instance Data.Monoid.Lifted.Monoid1 GHC.Types.IO
instance GHC.Classes.Ord k => Data.Monoid.Lifted.Monoid1 (Data.Map.Internal.Map k)
instance (Data.Hashable.Class.Hashable k, GHC.Classes.Eq k) => Data.Monoid.Lifted.Monoid1 (Data.HashMap.Internal.HashMap k)
instance Data.Monoid.Lifted.Monoid1 []
instance Data.Monoid.Lifted.Monoid1 Data.Functor.Identity.Identity
instance (Data.Monoid.Lifted.Monoid1 f, Data.Monoid.Lifted.Monoid1 g) => Data.Monoid.Lifted.Monoid1 (Data.Functor.Product.Product f g)
instance Data.Monoid.Lifted.Monoid1 Data.Semigroup.Internal.Dual
instance (GHC.Base.Semigroup a, GHC.Base.Monoid a) => Data.Monoid.Lifted.Monoid1 ((,) a)
instance Data.Monoid.Lifted.Monoid1 Data.Proxy.Proxy
instance Data.Monoid.Lifted.Monoid1 ((->) a)
instance Data.Monoid.Lifted.Semigroup1 GHC.Maybe.Maybe
instance (Data.Monoid.Lifted.Semigroup1 f, Data.Monoid.Lifted.Semigroup1 g) => Data.Monoid.Lifted.Semigroup1 (Data.Functor.Compose.Compose f g)
instance Data.Monoid.Lifted.Semigroup1 GHC.Types.IO
instance GHC.Classes.Ord k => Data.Monoid.Lifted.Semigroup1 (Data.Map.Internal.Map k)
instance (Data.Hashable.Class.Hashable k, GHC.Classes.Eq k) => Data.Monoid.Lifted.Semigroup1 (Data.HashMap.Internal.HashMap k)
instance Data.Monoid.Lifted.Semigroup1 []
instance Data.Monoid.Lifted.Semigroup1 Data.Functor.Identity.Identity
instance (Data.Monoid.Lifted.Semigroup1 f, Data.Monoid.Lifted.Semigroup1 g) => Data.Monoid.Lifted.Semigroup1 (Data.Functor.Product.Product f g)
instance Data.Monoid.Lifted.Semigroup1 Data.Semigroup.Internal.Dual
instance GHC.Base.Semigroup a => Data.Monoid.Lifted.Semigroup1 ((,) a)
instance Data.Monoid.Lifted.Semigroup1 Data.Proxy.Proxy
instance Data.Monoid.Lifted.Semigroup1 ((->) a)
instance GHC.Base.Semigroup a => Data.Monoid.Lifted.Semigroup1 (Data.Functor.Const.Const a)
-- | Data types and type classes for working with existentially quantified
-- values. When Quantified Class Constraints land in GHC 8.6, the
-- BarForall classes will be considered obsolete. When Dependent
-- Haskell lands, the BarForeach classes will also be obsolete.
-- The benefit that most of the typeclasses in this module provide is
-- that they help populate the instances of Exists and
-- Rec.
module Data.Exists
-- | Hide a type parameter.
data Exists (f :: k -> Type)
Exists :: !f a -> Exists (f :: k -> Type)
-- | Hide two type parameters.
data Exists2 (f :: k -> j -> Type)
Exists2 :: !f a b -> Exists2 (f :: k -> j -> Type)
-- | Hide three type parameters.
data Exists3 (f :: k -> j -> l -> Type)
Exists3 :: !f a b c -> Exists3 (f :: k -> j -> l -> Type)
-- | A dependent pair in which the first element is a singleton.
data Some (f :: k -> Type)
Some :: !Sing a -> !f a -> Some (f :: k -> Type)
-- | A pair in which the type of the second element can only be discovered
-- by looking at the first element. The type instance does not enforce
-- this, but all of its typeclass instances make this assumption.
data DependentPair (f :: k -> Type) (g :: k -> Type)
DependentPair :: f a -> g a -> DependentPair (f :: k -> Type) (g :: k -> Type)
data WitnessedEquality (a :: k) (b :: k)
[WitnessedEqualityEqual] :: WitnessedEquality a a
[WitnessedEqualityUnequal] :: WitnessedEquality a b
data WitnessedOrdering (a :: k) (b :: k)
[WitnessedOrderingLT] :: WitnessedOrdering a b
[WitnessedOrderingEQ] :: WitnessedOrdering a a
[WitnessedOrderingGT] :: WitnessedOrdering a b
newtype ApplyForall f a
ApplyForall :: f a -> ApplyForall f a
[getApplyForall] :: ApplyForall f a -> f a
-- | This is useful for recovering an instance of a typeclass when we have
-- the pi-quantified variant and a singleton in scope.
newtype ApplyForeach f a
ApplyForeach :: f a -> ApplyForeach f a
[getApplyForeach] :: ApplyForeach f a -> f a
newtype ApplyLifted f a
ApplyLifted :: f a -> ApplyLifted f a
[getApplyLifted] :: ApplyLifted f a -> f a
class EqForall f
eqForall :: EqForall f => f a -> f a -> Bool
class EqForall f => EqForallPoly f
eqForallPoly :: EqForallPoly f => f a -> f b -> WitnessedEquality a b
eqForallPoly :: (EqForallPoly f, TestEquality f) => f a -> f b -> WitnessedEquality a b
-- | Variant of EqForall that requires a pi-quantified type.
class EqForeach f
eqForeach :: EqForeach f => Sing a -> f a -> f a -> Bool
class EqForall f => OrdForall f
compareForall :: OrdForall f => f a -> f a -> Ordering
class (OrdForall f, EqForallPoly f) => OrdForallPoly f
compareForallPoly :: OrdForallPoly f => f a -> f b -> WitnessedOrdering a b
-- | Variant of OrdForall that requires a pi-quantified type.
class EqForeach f => OrdForeach f
compareForeach :: OrdForeach f => Sing a -> f a -> f a -> Ordering
class ShowForall f
showsPrecForall :: ShowForall f => Int -> f a -> ShowS
class ShowForeach f
showsPrecForeach :: ShowForeach f => Sing a -> Int -> f a -> ShowS
class ReadExists f
readPrecExists :: ReadExists f => ReadPrec (Exists f)
class EnumForall f
toEnumForall :: EnumForall f => Int -> f a
fromEnumForall :: EnumForall f => f a -> Int
class EnumExists f
toEnumExists :: EnumExists f => Int -> Exists f
fromEnumExists :: EnumExists f => Exists f -> Int
class BoundedExists f
minBoundExists :: BoundedExists f => Exists f
maxBoundExists :: BoundedExists f => Exists f
class SemigroupForall f
appendForall :: SemigroupForall f => f a -> f a -> f a
class SemigroupForeach f
appendForeach :: SemigroupForeach f => Sing a -> f a -> f a -> f a
class SemigroupForall f => MonoidForall f
emptyForall :: MonoidForall f => f a
class SemigroupForeach f => MonoidForeach f
emptyForeach :: MonoidForeach f => Sing a -> f a
class HashableForall f
hashWithSaltForall :: HashableForall f => Int -> f a -> Int
class HashableForeach f
hashWithSaltForeach :: HashableForeach f => Sing a -> Int -> f a -> Int
class PathPieceExists f
fromPathPieceForall :: PathPieceExists f => Text -> Maybe (Exists f)
toPathPieceForall :: PathPieceExists f => Exists f -> Text
class FromJSONForall f
parseJSONForall :: FromJSONForall f => Sing a -> Value -> Parser (f a)
class FromJSONForeach f
parseJSONForeach :: FromJSONForeach f => Sing a -> Value -> Parser (f a)
class FromJSONExists f
parseJSONExists :: FromJSONExists f => Value -> Parser (Exists f)
class ToJSONForall f
toJSONForall :: ToJSONForall f => f a -> Value
class ToJSONForeach f
toJSONForeach :: ToJSONForeach f => Sing a -> f a -> Value
data ToJSONKeyFunctionForall f
ToJSONKeyTextForall :: !forall a. f a -> Key -> !forall a. f a -> Encoding' Key -> ToJSONKeyFunctionForall f
ToJSONKeyValueForall :: !forall a. f a -> Value -> !forall a. f a -> Encoding -> ToJSONKeyFunctionForall f
data FromJSONKeyFunctionForeach f
FromJSONKeyTextParserForeach :: !forall a. Sing a -> Key -> Parser (f a) -> FromJSONKeyFunctionForeach f
FromJSONKeyValueForeach :: !forall a. Sing a -> Value -> Parser (f a) -> FromJSONKeyFunctionForeach f
class ToJSONKeyForall f
toJSONKeyForall :: ToJSONKeyForall f => ToJSONKeyFunctionForall f
class ToJSONKeyForeach f
toJSONKeyForeach :: ToJSONKeyForeach f => ToJSONKeyFunctionForall (Product Sing f)
class FromJSONKeyExists f
fromJSONKeyExists :: FromJSONKeyExists f => FromJSONKeyFunction (Exists f)
class FromJSONKeyForeach f
fromJSONKeyForeach :: FromJSONKeyForeach f => FromJSONKeyFunctionForeach f
class StorableForeach (f :: k -> Type)
peekForeach :: StorableForeach f => Sing a -> Ptr (f a) -> IO (f a)
pokeForeach :: StorableForeach f => Sing a -> Ptr (f a) -> f a -> IO ()
sizeOfForeach :: forall (a :: k). StorableForeach f => Proxy f -> Sing a -> Int
-- | This is like StorableForall except that the type constructor
-- must ignore its argument (for purposes of representation).
class StorableForall (f :: k -> Type)
peekForall :: StorableForall f => Ptr (f a) -> IO (f a)
pokeForall :: StorableForall f => Ptr (f a) -> f a -> IO ()
sizeOfForall :: StorableForall f => Proxy f -> Int
-- | Be careful with this typeclass. It is more unsafe than Prim.
-- With writeByteArray# and readByteArray#, one can
-- implement unsafeCoerce.
class PrimForall (f :: k -> Type)
sizeOfForall# :: PrimForall f => Proxy# f -> Int#
alignmentForall# :: PrimForall f => Proxy# f -> Int#
indexByteArrayForall# :: PrimForall f => ByteArray# -> Int# -> f a
readByteArrayForall# :: PrimForall f => MutableByteArray# s -> Int# -> State# s -> (# State# s, f a #)
writeByteArrayForall# :: PrimForall f => MutableByteArray# s -> Int# -> f a -> State# s -> State# s
setByteArrayForall# :: PrimForall f => MutableByteArray# s -> Int# -> Int# -> f a -> State# s -> State# s
indexOffAddrForall# :: PrimForall f => Addr# -> Int# -> f a
readOffAddrForall# :: PrimForall f => Addr# -> Int# -> State# s -> (# State# s, f a #)
writeOffAddrForall# :: PrimForall f => Addr# -> Int# -> f a -> State# s -> State# s
setOffAddrForall# :: PrimForall f => Addr# -> Int# -> Int# -> f a -> State# s -> State# s
class BinaryExists (f :: k -> Type)
putExists :: BinaryExists f => Exists f -> Put
getExists :: BinaryExists f => Get (Exists f)
class BinaryForeach (f :: k -> Type)
putForeach :: BinaryForeach f => Sing a -> f a -> Put
getForeach :: BinaryForeach f => Sing a -> Get (f a)
class EqForall2 f
eqForall2 :: EqForall2 f => f a b -> f a b -> Bool
class EqForallPoly2 (f :: k -> j -> Type)
eqForallPoly2 :: forall (a :: k) (b :: j) (c :: k) (d :: j). EqForallPoly2 f => f a b -> f c d -> WitnessedEquality '(a, b) '(c, d)
class ShowForall2 f
showsPrecForall2 :: ShowForall2 f => Int -> f a b -> ShowS
class ShowForeach2 f
showsPrecForeach2 :: ShowForeach2 f => Sing a -> Sing b -> Int -> f a b -> ShowS
class BinaryExists2 (f :: k -> j -> Type)
putExists2 :: BinaryExists2 f => Exists2 f -> Put
getExists2 :: BinaryExists2 f => Get (Exists2 f)
type family Sing = (r :: k -> Type) | r -> k
data SingList :: forall (k :: Type). [k] -> Type
[SingListNil] :: SingList '[]
[SingListCons] :: Sing r -> SingList rs -> SingList (r : rs)
data SingMaybe :: Maybe k -> Type
[SingMaybeJust] :: Sing a -> SingMaybe ('Just a)
[SingMaybeNothing] :: SingMaybe 'Nothing
class Reify a
reify :: Reify a => Sing a
class Unreify k
unreify :: forall (a :: k) b. Unreify k => Sing a -> (Reify a => b) -> b
class EqSing k
eqSing :: forall (a :: k) (b :: k). EqSing k => Sing a -> Sing b -> Maybe (a :~: b)
class EqSing k => OrdSing k
compareSing :: forall (a :: k) (b :: k). OrdSing k => Sing a -> Sing b -> WitnessedOrdering a b
class ShowSing k
showsPrecSing :: forall (a :: k). ShowSing k => Int -> Sing a -> ShowS
class ToJSONSing k
toJSONSing :: forall (a :: k). ToJSONSing k => Sing a -> Value
class FromJSONSing k
parseJSONSing :: FromJSONSing k => Value -> Parser (Exists (Sing :: k -> Type))
class ToSing (f :: k -> Type)
toSing :: ToSing f => f a -> Sing a
-- | The two functions must form an isomorphism.
class SingKind k
demoteSing :: SingKind k => Sing (a :: k) -> k
promoteSing :: SingKind k => k -> Exists (Sing :: k -> Type)
showsForall :: ShowForall f => f a -> ShowS
showsForeach :: ShowForeach f => Sing a -> f a -> ShowS
showForall :: ShowForall f => f a -> String
showListForall :: ShowForall f => [f a] -> ShowS
showListForeach :: ShowForeach f => Sing a -> [f a] -> ShowS
showsForall2 :: ShowForall2 f => f a b -> ShowS
showForall2 :: ShowForall2 f => f a b -> String
defaultEqForallPoly :: (TestEquality f, EqForall f) => f a -> f b -> WitnessedEquality a b
defaultCompareForallPoly :: (TestEquality f, OrdForall f) => f a -> f b -> Ordering
-- | Parse a Map whose key type is higher-kinded. This only creates
-- a valid Map if the OrdForeach instance agrees with the
-- Ord instance.
parseJSONMapForeachKey :: forall k (f :: k -> Type) (a :: k) v. (FromJSONKeyForeach f, OrdForeach f, Unreify k) => (Value -> Parser v) -> Sing a -> Value -> Parser (Map (f a) v)
toJSONMapForeachKey :: (ToJSONKeyForeach f, ToJSONForeach v) => Sing a -> Map (f a) (v a) -> Value
weakenEquality :: WitnessedEquality a b -> Bool
weakenOrdering :: WitnessedOrdering a b -> Ordering
strengthenEquality :: Bool -> WitnessedEquality a a
-- | Given that we already know two types are equal, promote an
-- Ordering.
strengthenOrdering :: Ordering -> WitnessedOrdering a a
-- | Given that we already know two types to be unequal, promote an
-- Ordering. The argument should not be EQ.
strengthenUnequalOrdering :: Ordering -> WitnessedOrdering a b
unreifyList :: forall (k :: Type) (as :: [k]) (b :: Type). Unreify k => SingList as -> (Reify as => b) -> b
instance forall k (f :: k -> *). (Data.Exists.FromJSONForeach f, Data.Exists.FromJSONSing k) => Data.Aeson.Types.FromJSON.FromJSON (Data.Exists.Some f)
instance forall k (f :: k -> *). (Data.Exists.ToJSONForeach f, Data.Exists.ToJSONSing k) => Data.Aeson.Types.ToJSON.ToJSON (Data.Exists.Some f)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Exists.EqForallPoly f, Data.Exists.ToSing f, Data.Exists.EqForeach g) => GHC.Classes.Eq (Data.Exists.DependentPair f g)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Exists.OrdForallPoly f, Data.Exists.ToSing f, Data.Exists.OrdForeach g) => GHC.Classes.Ord (Data.Exists.DependentPair f g)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Exists.ShowForall f, Data.Exists.ToSing f, Data.Exists.ShowForeach g) => GHC.Show.Show (Data.Exists.DependentPair f g)
instance Data.Exists.Reify 'GHC.Maybe.Nothing
instance forall a1 (a2 :: a1). Data.Exists.Reify a2 => Data.Exists.Reify ('GHC.Maybe.Just a2)
instance Data.Exists.SingKind k => Data.Exists.SingKind [k]
instance Data.Exists.Reify '[]
instance forall a1 (a2 :: a1) (as :: [a1]). (Data.Exists.Reify a2, Data.Exists.Reify as) => Data.Exists.Reify (a2 : as)
instance Data.Exists.EqForall Data.Exists.SingList
instance Data.Exists.EqSing k => Data.Exists.EqForallPoly Data.Exists.SingList
instance (Data.Exists.SingKind k, Data.Binary.Class.Binary k) => Data.Exists.BinaryExists Data.Exists.SingList
instance forall k (xs :: [k]). Data.Exists.ShowSing k => GHC.Show.Show (Data.Exists.SingList xs)
instance forall k (f :: k -> *) (a :: k). Data.Exists.MonoidForall f => GHC.Base.Monoid (Data.Exists.ApplyForall f a)
instance forall k (f :: k -> *). Data.Exists.MonoidForall f => Data.Exists.MonoidForall (Data.Exists.ApplyForall f)
instance GHC.Base.Monoid a => Data.Exists.MonoidForall (Data.Functor.Const.Const a)
instance forall k (f :: k -> *) (a :: k). (Data.Exists.MonoidForeach f, Data.Exists.Reify a) => GHC.Base.Monoid (Data.Exists.ApplyForeach f a)
instance forall k (f :: k -> *). Data.Exists.MonoidForeach f => Data.Exists.MonoidForeach (Data.Exists.ApplyForeach f)
instance Data.Exists.ShowSing k => Data.Exists.ShowSing [k]
instance forall k (f :: k -> *). (Data.Exists.ShowForeach f, Data.Exists.ShowSing k) => GHC.Show.Show (Data.Exists.Some f)
instance forall k (f :: k -> *). (Data.Exists.OrdForeach f, Data.Exists.OrdSing k) => GHC.Classes.Ord (Data.Exists.Some f)
instance Data.Exists.EqSing a => Data.Exists.EqSing [a]
instance forall k (f :: k -> *). (Data.Exists.EqForeach f, Data.Exists.EqSing k) => GHC.Classes.Eq (Data.Exists.Some f)
instance Data.Exists.Unreify k => Data.Exists.Unreify [k]
instance forall k (f :: k -> *) (a :: k). (Data.Exists.EqForeach f, Data.Exists.Reify a) => GHC.Classes.Eq (Data.Exists.ApplyForeach f a)
instance forall k (f :: k -> *) (a :: k). (Data.Exists.OrdForeach f, Data.Exists.Reify a) => GHC.Classes.Ord (Data.Exists.ApplyForeach f a)
instance forall k (f :: k -> *) (a :: k). (Data.Exists.ShowForeach f, Data.Exists.Reify a) => GHC.Show.Show (Data.Exists.ApplyForeach f a)
instance forall k (f :: k -> *) (a :: k). (Data.Exists.SemigroupForeach f, Data.Exists.Reify a) => GHC.Base.Semigroup (Data.Exists.ApplyForeach f a)
instance forall k (f :: k -> *) (a :: k). (Data.Exists.ToJSONForeach f, Data.Exists.Reify a) => Data.Aeson.Types.ToJSON.ToJSON (Data.Exists.ApplyForeach f a)
instance forall k (f :: k -> *) (a :: k). (Data.Exists.FromJSONForeach f, Data.Exists.Reify a) => Data.Aeson.Types.FromJSON.FromJSON (Data.Exists.ApplyForeach f a)
instance forall k (f :: k -> *) (a :: k). (Data.Exists.ToJSONKeyForeach f, Data.Exists.Reify a) => Data.Aeson.Types.ToJSON.ToJSONKey (Data.Exists.ApplyForeach f a)
instance forall k (f :: k -> *) (a :: k). (Data.Exists.FromJSONKeyForeach f, Data.Exists.Reify a) => Data.Aeson.Types.FromJSON.FromJSONKey (Data.Exists.ApplyForeach f a)
instance forall k (f :: k -> *). Data.Exists.FromJSONKeyForeach f => Data.Exists.FromJSONKeyForeach (Data.Exists.ApplyForeach f)
instance forall k (f :: k -> *). Data.Exists.OrdForeach f => Data.Exists.OrdForeach (Data.Exists.ApplyForeach f)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Functor.Classes.Ord1 f, Data.Exists.OrdForeach g) => Data.Exists.OrdForeach (Data.Functor.Compose.Compose f g)
instance forall k (f :: k -> *). Data.Exists.EqForeach f => Data.Exists.EqForeach (Data.Exists.ApplyForeach f)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Functor.Classes.Eq1 f, Data.Exists.EqForeach g) => Data.Exists.EqForeach (Data.Functor.Compose.Compose f g)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Functor.Classes.Show1 f, Data.Exists.ShowForeach g) => Data.Exists.ShowForeach (Data.Functor.Compose.Compose f g)
instance forall k (f :: k -> *). Data.Exists.ToJSONKeyForeach f => Data.Exists.ToJSONKeyForeach (Data.Exists.ApplyForeach f)
instance forall k (f :: k -> *). Data.Exists.ToJSONForeach f => Data.Exists.ToJSONForeach (Data.Exists.ApplyForeach f)
instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Exists.ToJSONForeach (Data.Functor.Const.Const a)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Aeson.Types.ToJSON.ToJSON1 f, Data.Exists.ToJSONForeach g) => Data.Exists.ToJSONForeach (Data.Functor.Compose.Compose f g)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Aeson.Types.FromJSON.FromJSON1 f, Data.Exists.FromJSONForall g) => Data.Exists.FromJSONForall (Data.Functor.Compose.Compose f g)
instance forall k (f :: k -> *). Data.Exists.FromJSONForeach f => Data.Exists.FromJSONForeach (Data.Exists.ApplyForeach f)
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Exists.FromJSONForeach (Data.Functor.Const.Const a)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Aeson.Types.FromJSON.FromJSON1 f, Data.Exists.FromJSONForeach g) => Data.Exists.FromJSONForeach (Data.Functor.Compose.Compose f g)
instance forall k (f :: k -> *). Data.Exists.SemigroupForeach f => Data.Exists.SemigroupForeach (Data.Exists.ApplyForeach f)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Monoid.Lifted.Semigroup1 f, Data.Exists.SemigroupForeach g) => Data.Exists.SemigroupForeach (Data.Functor.Compose.Compose f g)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Binary.Lifted.Binary1 f, Data.Exists.BinaryForeach g) => Data.Exists.BinaryForeach (Data.Functor.Compose.Compose f g)
instance forall k j (f :: k -> j -> *). Data.Exists.BinaryExists2 f => Data.Binary.Class.Binary (Data.Exists.Exists2 f)
instance forall k (f :: k -> *). Data.Exists.BinaryExists f => Data.Binary.Class.Binary (Data.Exists.Exists f)
instance forall k (f :: k -> *) (a :: k). Data.Exists.SemigroupForall f => GHC.Base.Semigroup (Data.Exists.ApplyForall f a)
instance forall k (f :: k -> *). Data.Exists.SemigroupForall f => Data.Exists.SemigroupForall (Data.Exists.ApplyForall f)
instance Data.Exists.SemigroupForall Data.Proxy.Proxy
instance forall k (f :: * -> *) (g :: k -> *). (Data.Monoid.Lifted.Semigroup1 f, Data.Exists.SemigroupForall g) => Data.Exists.SemigroupForall (Data.Functor.Compose.Compose f g)
instance GHC.Base.Semigroup a => Data.Exists.SemigroupForall (Data.Functor.Const.Const a)
instance forall k (f :: k -> *). Data.Exists.PathPieceExists f => Web.PathPieces.PathPiece (Data.Exists.Exists f)
instance forall k (f :: k -> *). Data.Exists.BoundedExists f => GHC.Enum.Bounded (Data.Exists.Exists f)
instance forall k (f :: k -> *). Data.Exists.EnumExists f => GHC.Enum.Enum (Data.Exists.Exists f)
instance forall k (f :: k -> *). (Data.Exists.FromJSONKeyExists f, Data.Exists.FromJSONExists f) => Data.Aeson.Types.FromJSON.FromJSONKey (Data.Exists.Exists f)
instance forall k (f :: k -> *). Data.Exists.FromJSONExists f => Data.Aeson.Types.FromJSON.FromJSON (Data.Exists.Exists f)
instance forall k (f :: k -> *). (Data.Exists.ToJSONKeyForall f, Data.Exists.ToJSONForall f) => Data.Aeson.Types.ToJSON.ToJSONKey (Data.Exists.Exists f)
instance forall k (f :: k -> *). Data.Exists.ToJSONForall f => Data.Aeson.Types.ToJSON.ToJSON (Data.Exists.Exists f)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Aeson.Types.ToJSON.ToJSON1 f, Data.Exists.ToJSONForall g) => Data.Exists.ToJSONForall (Data.Functor.Compose.Compose f g)
instance Data.Hashable.Class.Hashable a => Data.Exists.HashableForall (Data.Functor.Const.Const a)
instance forall k (f :: k -> *). (Data.Exists.EqForallPoly f, Data.Exists.HashableForall f) => Data.Hashable.Class.Hashable (Data.Exists.Exists f)
instance forall k j (f :: k -> j -> *). Data.Exists.EqForallPoly2 f => GHC.Classes.Eq (Data.Exists.Exists2 f)
instance Data.Exists.EqForall2 (Data.Type.Equality.:~:)
instance Data.Exists.ReadExists Data.Proxy.Proxy
instance forall k (f :: k -> *). Data.Exists.ReadExists f => GHC.Read.Read (Data.Exists.Exists f)
instance forall k j (f :: k -> j -> *). Data.Exists.ShowForall2 f => GHC.Show.Show (Data.Exists.Exists2 f)
instance forall k (f :: k -> *) (a :: k). Data.Exists.ShowForall f => GHC.Show.Show (Data.Exists.ApplyForall f a)
instance Data.Exists.ShowForall Data.Proxy.Proxy
instance GHC.Show.Show a => Data.Exists.ShowForall (Data.Functor.Const.Const a)
instance forall k (f :: k -> *). Data.Exists.ShowForall f => GHC.Show.Show (Data.Exists.Exists f)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Exists.ShowForall f, Data.Exists.ShowForall g) => Data.Exists.ShowForall (Data.Functor.Product.Product f g)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Functor.Classes.Show1 f, Data.Exists.ShowForall g) => Data.Exists.ShowForall (Data.Functor.Compose.Compose f g)
instance forall k (f :: k -> *). Data.Exists.OrdForallPoly f => GHC.Classes.Ord (Data.Exists.Exists f)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Exists.OrdForallPoly f, Data.Exists.OrdForallPoly g) => Data.Exists.OrdForallPoly (Data.Functor.Product.Product f g)
instance forall k (f :: k -> *). Data.Exists.EqForallPoly f => GHC.Classes.Eq (Data.Exists.Exists f)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Exists.EqForallPoly f, Data.Exists.EqForallPoly g) => Data.Exists.EqForallPoly (Data.Functor.Product.Product f g)
instance Data.Exists.OrdForall Data.Proxy.Proxy
instance GHC.Classes.Ord a => Data.Exists.OrdForall (Data.Functor.Const.Const a)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Exists.OrdForall f, Data.Exists.OrdForall g) => Data.Exists.OrdForall (Data.Functor.Product.Product f g)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Exists.OrdForall f, Data.Exists.OrdForall g) => Data.Exists.OrdForall (Data.Functor.Sum.Sum f g)
instance Data.Exists.EqForall Data.Proxy.Proxy
instance forall k (a :: k). Data.Exists.EqForall ((Data.Type.Equality.:~:) a)
instance GHC.Classes.Eq a => Data.Exists.EqForall (Data.Functor.Const.Const a)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Exists.EqForall f, Data.Exists.EqForall g) => Data.Exists.EqForall (Data.Functor.Product.Product f g)
instance forall k (f :: * -> *) (g :: k -> *). (Data.Functor.Classes.Eq1 f, Data.Exists.EqForall g) => Data.Exists.EqForall (Data.Functor.Compose.Compose f g)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Exists.EqForall f, Data.Exists.EqForall g) => Data.Exists.EqForall (Data.Functor.Sum.Sum f g)
instance (Data.Monoid.Lifted.Semigroup1 f, GHC.Base.Semigroup a) => GHC.Base.Semigroup (Data.Exists.ApplyLifted f a)
instance (Data.Monoid.Lifted.Monoid1 f, GHC.Base.Monoid a) => GHC.Base.Monoid (Data.Exists.ApplyLifted f a)
instance (Data.Functor.Classes.Eq1 f, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.Exists.ApplyLifted f a)
instance (Data.Functor.Classes.Ord1 f, GHC.Classes.Ord a) => GHC.Classes.Ord (Data.Exists.ApplyLifted f a)
instance Data.Monoid.Lifted.Semigroup1 f => Data.Monoid.Lifted.Semigroup1 (Data.Exists.ApplyLifted f)
instance Data.Monoid.Lifted.Monoid1 f => Data.Monoid.Lifted.Monoid1 (Data.Exists.ApplyLifted f)
instance Data.Functor.Classes.Eq1 f => Data.Functor.Classes.Eq1 (Data.Exists.ApplyLifted f)
instance Data.Functor.Classes.Ord1 f => Data.Functor.Classes.Ord1 (Data.Exists.ApplyLifted f)