úΩ   None   None2Given a constructor (or pattern synonym) for type T, ! generates a function of type T !’ Bool.<The function evaluates its argument to WHNF, and returns  0 if the head constructor matches the given one,   otherwise.$(is 'Just) (Just 5)True $(isNot 'Con) "a not . $(is 'Con)$(isNot '(:)) [1,2,3]FalseGiven a pattern for type T, ! generates a function of type T !’ Bool.The function returns  1 if the expression matches the pattern; a and   otherwise. $(isP [p| Con{} |]) "a $(is 'Con)$(isP [p| Just{} |]) NothingFalse*$(isNotP [p| P |]) "a not . $(isP [p| P |])QGenerates a predicate with name isK for each constructor K of the given type T Generate predicates of the form isK$(makePredicates ''E)isPlus (Plus (Lit 1) (Lit 2))True Generate predicates of the form isNotK$(makePredicatesNot ''E)isNotAnd (Showable True)True#Generate predicates of both forms, isK and isNotKK$(makePredicatesAll ''E) "a $(makePredicates ''E) ; $(makePredicatesNot ''E)  Safe *9;<=DQR[ Safe *:<=DORTSafe*DORT    None       !"#$%is-0.4-J1voAYXxpA9CtaHp96PsQkData.Generics.Is.THData.Generics.Is.GenericData.Generics.Is.DataData.Generics.Is.TH.CompatData.Generics.Is.InternalData.Generics.IsisisNotisPisNotPmakePredicatesmakePredicatesNotmakePredicatesAllconstructorNamesghc-prim GHC.TypesTrueFalsederivePredicatesisPBaseisBaseEqHeadeqH ConstructsBaseRebaserebase construct $fEqHead:+: $fEqHeadM1 $fEqHeadK1 $fEqHead:*: $fEqHeadU1 $fEqHeadV1 $fRebase(->)c $fRebasecc