ptera-0.1.0.0: src/Language/Parser/Ptera/Data/HEnum.hs
{-# 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
{
unsafeHEnum :: Int
}
deriving (Eq, Show)
henum :: forall a as. Membership.Membership as a -> HEnum as
henum m = UnsafeHEnum do Membership.getMemberId m
henumA :: forall a as. Membership.Member as a => HEnum as
henumA = henum do MembershipInternal.membership @as @a
unHEnum :: forall a as. Membership.Membership as a -> HEnum as -> Bool
unHEnum m (UnsafeHEnum i) = Membership.getMemberId m == i