úÎ5^1”,      !"#$%&'()*+ Safe-Infered'An alias for convenience. A version of  for kind * -> *.  A version of   for kind * -> *.  Construct el from a value of a type constructor applied to a type, where the type constructor satisfies the constraint. =Apply a function requiring the constraint to the held value. A * -> * kinded version of  ’ which holds a value of a type constructor applied to a type, hiding the type constructor, and evidence for a constraint on the type constructor. An alias for convenience.  - foo :: ExistentialWith Show e => e -> IO () is equivalent to = foo :: (Existential e, ConstraintOf e ~ Show) => e -> IO () 5A type class to abstract over existential datatypes.  Example:   data EShow where $ EShow :: Show a => a -> EShow  " instance Existential EShow where $ type ConstraintOf EShow = Show  exists = EShow  apply f (EShow a) = f a   foo :: EShow $ foo = exists (Just 9 :: Maybe Int)  + main = apply print foo -- prints "Just 9" Note that had we given foo the type signature  4 foo :: (Existential e, ConstraintOf e ~ Show) => e BGHC would have given us an error message, because the instance of  ( to use would have been ambiguous. (The   f .   problem is the same as the , . - problem.)  Construct e3 from a value of a type satisfying the constraint. =Apply a function requiring the constraint to the held value. CA datatype which holds a value of a type satisfying the constraint ck, hiding the type, and evidence for the constraint, so that it can be retrieved by pattern matching later.  Example:  foo :: Exists Show $ foo = Exists (Just 9 :: Maybe Int)  % printExists :: Exists Show -> IO () " printExists (Exists e) = print e  + main = printExists foo -- prints "Just 9" \Translate between different existential datatypes holding evidence for the same constraint. `Translate between different existential datatypes holding evidence for the same constraint on a * -> * kinded type constructor. .  ( c) = c/   (  c) = c 0.1/    0.1/ Safe-Infered Safe-Infered,An empty constraint, which implies nothing. ! and  form a type-level monoid with  as the identity element.  The same as !. !,Combine two constraint constructors of kind Ç -> , where Ç is any kind. This is the same as   type (c :&: d) a = (c a, d a) )except that it can be partially applied.  1 f :: ((Eq :&: Enum :&: Bounded) a) => a -> Bool is equivalent to - f :: (Eq a, Enum a, Bounded a) => a -> Bool  !23 !!  !23 Safe-Infered4  (" c) = c5   (% c) = c"#$%&'45"#$%&'%&'"#$"#$%&'45 Safe-Infered(A datatype containing any * -> *$ kinded type constructor applied to a . You can't do anything with it. *'A datatype containing anything. You can't do anything with it. ()*+67()*+*+()()*+67 Safe-Infered8   9 = :;   < = =>  ( = ?   * = @  A = B   A =  CDEFGHI8;>?@B    CDEFGHI8;>?@BJ      !"#$%&'()*++,,-./-012345672389:-;<-;=>-?@-ABCDEFGHIJKLMNO exists-0.2 Data.ExistsData.Exists.DefaultsControl.Constraint.CombineData.Exists.CPS Data.AnythingData.Exists.Internalghc-primGHC.Prim ConstraintExistentialWith1 Existential1 ConstraintOf1exists1apply1Exists1ExistentialWith Existential ConstraintOfexistsapplyExists translate translate1 showDefaultshowsPrecDefault fmapDefault foldDefaultfoldMapDefault foldrDefault foldlDefault foldr1Default foldl1DefaulttraverseDefaultsequenceADefault mapMDefaultsequenceDefaultcontramapDefaultEmptyAnd:&: withExists1 withExists Anything1AnythingbaseGHC.Showshow Text.Readread$fExistential1Exists1$fExistentialExists$fExistentialWith1ce$fExistentialWithce $fEmptyka $f:&:kcda$fShowAnything1$fShowAnything$fExistentialSomeException GHC.Exception SomeException Exception$fExistentialDynamic Data.DynamicDynamicData.Typeable.InternalTypeable$fExistential1Anything1$fExistentialAnything$fExistential1AnyAny$fExistentialAny$fContravariantExists1$fTraversableExists1$fFoldableExists1$fFunctorExists1$fFoldableExists10$fFunctorExists10 $fShowExists