{-# LANGUAGE AllowAmbiguousTypes #-} module Language.Parser.Ptera.Data.HEnum where import Language.Parser.Ptera.Prelude import qualified Type.Membership as Membership import qualified Type.Membership.Internal as MembershipInternal type T = HEnum newtype HEnum (as :: [k]) = UnsafeHEnum { forall k (as :: [k]). HEnum as -> Int unsafeHEnum :: Int } deriving (HEnum as -> HEnum as -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall k (as :: [k]). HEnum as -> HEnum as -> Bool /= :: HEnum as -> HEnum as -> Bool $c/= :: forall k (as :: [k]). HEnum as -> HEnum as -> Bool == :: HEnum as -> HEnum as -> Bool $c== :: forall k (as :: [k]). HEnum as -> HEnum as -> Bool Eq, Int -> HEnum as -> ShowS forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall k (as :: [k]). Int -> HEnum as -> ShowS forall k (as :: [k]). [HEnum as] -> ShowS forall k (as :: [k]). HEnum as -> String showList :: [HEnum as] -> ShowS $cshowList :: forall k (as :: [k]). [HEnum as] -> ShowS show :: HEnum as -> String $cshow :: forall k (as :: [k]). HEnum as -> String showsPrec :: Int -> HEnum as -> ShowS $cshowsPrec :: forall k (as :: [k]). Int -> HEnum as -> ShowS Show) henum :: forall a as. Membership.Membership as a -> HEnum as henum :: forall {k} (a :: k) (as :: [k]). Membership as a -> HEnum as henum Membership as a m = forall k (as :: [k]). Int -> HEnum as UnsafeHEnum do forall k (xs :: [k]) (x :: k). Membership xs x -> Int Membership.getMemberId Membership as a m henumA :: forall a as. Membership.Member as a => HEnum as henumA :: forall {k} (a :: k) (as :: [k]). Member as a => HEnum as henumA = forall {k} (a :: k) (as :: [k]). Membership as a -> HEnum as henum do forall {k} (xs :: [k]) (x :: k). Member xs x => Membership xs x MembershipInternal.membership @as @a unHEnum :: forall a as. Membership.Membership as a -> HEnum as -> Bool unHEnum :: forall {k} (a :: k) (as :: [k]). Membership as a -> HEnum as -> Bool unHEnum Membership as a m (UnsafeHEnum Int i) = forall k (xs :: [k]) (x :: k). Membership xs x -> Int Membership.getMemberId Membership as a m forall a. Eq a => a -> a -> Bool == Int i