úÎ8|39[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZUnsafe)Very unsafe! The same rules apply as for [.  Very unsafe!  Very unsafe! Unsafe)Very unsafe! The same rules apply as for [. )Very unsafe! The same rules apply as for [.  Very unsafe!  Very unsafe!  TrustworthyEvidence that i; is the argument type of the outermost type constructor of a Evidence that f& is the outermost type constructor of a Evidence that type a is the same as type b. The \, ], and ^ instances of Maybe 3 are very useful for working with values of type Maybe (a :~: b). MCan be implemented by types storing evidence of type equalities, i.e. GADTs. A return value of NothingY can mean any of definite inequality, impossible arguments, or insufficient information. Minimal complete definition: maybeEq or (~~), plus either:  piecewiseMaybeEq, or  both  maybeOuterEq and  maybeInnerEq. or  (<~>), or  both (~>) and (<~). Due to  /http://hackage.haskell.org/trac/ghc/ticket/5591 you may have to use  and/or  to define some of these.  0 uncurry (liftA2 assembleEq) (a <~> b) = a ~~ b  0 uncurry (liftA2 assembleEq) (a <~> b) = a ~~ b %Unpack equality evidence and use it. /This function compiles with GHC 6.10, but doesn't work.  Reflexivity  Transitivity ! Symmetry " Type constructors are injective #,Use equality evidence to cast between types $,Use equality evidence to cast between types %-Unpack partial equality evidence and use it. /This function compiles with GHC 6.10, but doesn't work. &-Unpack partial equality evidence and use it. /This function compiles with GHC 6.10, but doesn't work. +$Runtime type equality evidence from Typeable $  !"#$%&'()*+_`abcde  !"#$%&'()*+  !"#$  %&'()*+    !"#$%&'()*+_`abcde Trustworthy,!Type constructors are generative / Reflexivity 0 Transitivity 1 Transitivity 2 Symmetry 3 Congruence? 4 Congruence? 5!Type constructors are generative 6 Type constructors are injective 7$Runtime type equality evidence from  Typeable1 @ Reflexivity A Transitivity B Transitivity C Symmetry D Congruence? E Congruence? F$Runtime type equality evidence from  Typeable2 #,-./0123456789:;<=>?@ABCDEF@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF#,-./0123456789:;<=>?@ABCDEF,-./0123456789:;<=>?@ABCDEF Trustworthy G Synonym for  . Kind-polymorphic, unlike (f). H Congruence? I Congruence? J!Type constructors are generative K$Runtime type equality evidence from  Typeable1 L$Runtime type equality evidence from  Typeable2 M$Runtime type equality evidence from  Typeable3 N$Runtime type equality evidence from  Typeable4 O$Runtime type equality evidence from  Typeable5 P$Runtime type equality evidence from  Typeable6 Q$Runtime type equality evidence from  Typeable7 GHIJKLMNOPQRSTUVWXYZ1  !"#$%&'()*+GHIJKLMNOPQRSTUVWXYZGHIJKLMNOPQRSTUVWXYZGHIJKLMNOPQRSTUVWXYZg        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH3I6.9HJKLMN/OPQRSTUVWXYWZ[W\]WZ^_`abcdeWfgh type-eq-0.2.1Type.Eq.HigherType.EqType.Eq.UnsafeType.Eq.Higher.Unsafe Type.Eq.PolyInnerEq1OuterEq1:::~:::Eq2::~::Eq1InnerEqOuterEq:~:EqunsafeCoercion unsafeOuterEq unsafeInnerEqunsafeCoercion1unsafeCoercion2unsafeOuterEq1unsafeInnerEq1 TypeComparemaybeEq~~ maybeOuterEq~> maybeInnerEq<~piecewiseMaybeEq<~>withEqidEq composeEqflipEq argumentEqcast|> withOuterEq withInnerEqouterEqinnerEq assembleEq sameInnerEq dynamicEq constructorEq sameOuterEqwithEq1idEq1 composeEq1|.|flipEq1applyEq1|$|constructorEq1 argumentEq1 dynamicEq1 withOuterEq1 withInnerEq1outerEq1innerEq1 assembleEq1 sameOuterEq1 sameInnerEq1withEq2idEq2 composeEq2||.||flipEq2applyEq2||$|| dynamicEq2applyEq dynamicEq3 dynamicEq4 dynamicEq5 dynamicEq6 dynamicEq7fromEq1toEq1fromEq2toEq2 fromOuterEq1 toOuterEq1 fromInnerEq1 toInnerEq1base Unsafe.Coerce unsafeCoerceGHC.BaseFunctorControl.Applicative ApplicativeMonad$fTypeComparekOuterEq$fTypeComparekInnerEq$fTypeComparek:~: $fGroupoid:~:$fSemigroupoid:~: $fCategory:~:$fTypeable2:~:Control.Category.