Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data types and type classes for working with existentially quantified
values. In the event that Quantified Class Constraints ever land in GHC,
this package will be considered obsolete. The benefit that most of the
typeclasses in this module provide is that they help populate the instances
of Exists
.
- data Exists f = Exists !(f a)
- data Exists2 f = Exists2 !(f a b)
- data Exists3 f = Exists3 !(f a b c)
- class EqForall f where
- class EqForall f => EqForallPoly f where
- class EqForall f => OrdForall f where
- class (OrdForall f, EqForallPoly f) => OrdForallPoly f where
- class ShowForall f where
- class ReadForall f where
- class EnumForall f where
- class BoundedForall f where
- class SemigroupForall f where
- class SemigroupForall f => MonoidForall f where
- class HashableForall f where
- class PathPieceForall f where
- class FromJSONForall f where
- class ToJSONForall f where
- class ToJSONKeyForall f where
- class FromJSONKeyForall f where
- class EqForall2 f where
- class EqForallPoly2 f where
- showsForall :: ShowForall f => f a -> ShowS
- showForall :: ShowForall f => f a -> String
- defaultEqForallPoly :: (TestEquality f, EqForall f) => f a -> f b -> Bool
- defaultCompareForallPoly :: (TestEquality f, OrdForall f) => f a -> f b -> Ordering
Data Types
Hide a type parameter.
Exists !(f a) |
BoundedForall k f => Bounded (Exists k f) Source # | |
EnumForall k f => Enum (Exists k f) Source # | |
EqForallPoly k f => Eq (Exists k f) Source # | |
OrdForallPoly k f => Ord (Exists k f) Source # | |
ReadForall k f => Read (Exists k f) Source # | |
ShowForall k f => Show (Exists k f) Source # | |
HashableForall k f => Hashable (Exists k f) Source # | |
ToJSONForall k f => ToJSON (Exists k f) Source # | |
(ToJSONKeyForall k f, ToJSONForall k f) => ToJSONKey (Exists k f) Source # | |
FromJSONForall k f => FromJSON (Exists k f) Source # | |
(FromJSONKeyForall k f, FromJSONForall k f) => FromJSONKey (Exists k f) Source # | |
PathPieceForall k f => PathPiece (Exists k f) Source # | |
Type Classes
class EqForall f => EqForallPoly f where Source #
eqForallPoly :: f a -> f b -> Bool Source #
eqForallPoly :: TestEquality f => f a -> f b -> Bool Source #
Eq a => EqForallPoly k (Const k a) Source # | |
(EqForallPoly k f, EqForallPoly k g) => EqForallPoly k (Product k f g) Source # | |
(Eq1 f, EqForallPoly k g) => EqForallPoly k (Compose k * f g) Source # | |
class (OrdForall f, EqForallPoly f) => OrdForallPoly f where Source #
compareForallPoly :: f a -> f b -> Ordering Source #
compareForallPoly :: TestEquality f => f a -> f b -> Ordering Source #
Ord a => OrdForallPoly k (Const k a) Source # | |
(OrdForallPoly k f, OrdForallPoly k g) => OrdForallPoly k (Product k f g) Source # | |
class ShowForall f where Source #
showsPrecForall :: Int -> f a -> ShowS Source #
ShowForall k (Proxy k) Source # | |
(ShowForall k f, ShowForall k g) => ShowForall k (Product k f g) Source # | |
class ReadForall f where Source #
readPrecForall :: ReadPrec (Exists f) Source #
ReadForall k (Proxy k) Source # | |
class EnumForall f where Source #
toEnumForall :: Int -> Exists f Source #
fromEnumForall :: f a -> Int Source #
class BoundedForall f where Source #
minBoundForall :: Exists f Source #
maxBoundForall :: Exists f Source #
class SemigroupForall f where Source #
sappendForall :: f a -> f a -> f a Source #
SemigroupForall k (Proxy k) Source # | |
class SemigroupForall f => MonoidForall f where Source #
memptyForall :: f a Source #
MonoidForall k (Proxy k) Source # | |
class HashableForall f where Source #
hashWithSaltForall :: Int -> f a -> Int Source #
Hashable a => HashableForall k (Const k a) Source # | |
class PathPieceForall f where Source #
fromPathPieceForall :: Text -> Maybe (Exists f) Source #
toPathPieceForall :: f a -> Text Source #
class FromJSONForall f where Source #
class ToJSONKeyForall f where Source #
toJSONKeyForall :: ToJSONKeyFunctionForall f Source #
class FromJSONKeyForall f where Source #
Higher Rank Classes
Functions
showsForall :: ShowForall f => f a -> ShowS Source #
showForall :: ShowForall f => f a -> String Source #
defaultEqForallPoly :: (TestEquality f, EqForall f) => f a -> f b -> Bool Source #
defaultCompareForallPoly :: (TestEquality f, OrdForall f) => f a -> f b -> Ordering Source #