aztecs-0.2.0.0: A type-safe and friendly ECS for Haskell
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Aztecs.Entity

Documentation

data Entity (ts :: [Type]) where Source #

Constructors

ENil :: Entity '[] 
ECons :: t -> Entity ts -> Entity (t ': ts) 

Instances

Instances details
FromEntity (Entity ts) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

fromEntity :: Entity (EntityT (Entity ts)) -> Entity ts Source #

ToEntity (Entity ts) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

toEntity :: Entity ts -> Entity (EntityT (Entity ts)) Source #

(Show a, Show' (Entity as)) => Show (Entity (a ': as)) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

showsPrec :: Int -> Entity (a ': as) -> ShowS #

show :: Entity (a ': as) -> String #

showList :: [Entity (a ': as)] -> ShowS #

Show (Entity ('[] :: [Type])) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

showsPrec :: Int -> Entity '[] -> ShowS #

show :: Entity '[] -> String #

showList :: [Entity '[]] -> ShowS #

type family EntityT a where ... Source #

Equations

EntityT (a :& b) = a ': EntityT b 
EntityT (Entity ts) = ts 
EntityT a = '[a] 

class FromEntity a where Source #

Methods

fromEntity :: Entity (EntityT a) -> a Source #

Instances

Instances details
EntityT a ~ '[a] => FromEntity a Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

fromEntity :: Entity (EntityT a) -> a Source #

FromEntity (Entity ts) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

fromEntity :: Entity (EntityT (Entity ts)) -> Entity ts Source #

(FromEntity a, FromEntity b, EntityT (a :& b) ~ (a ': EntityT b)) => FromEntity (a :& b) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

fromEntity :: Entity (EntityT (a :& b)) -> a :& b Source #

class ToEntity a where Source #

Methods

toEntity :: a -> Entity (EntityT a) Source #

Instances

Instances details
EntityT a ~ '[a] => ToEntity a Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

toEntity :: a -> Entity (EntityT a) Source #

ToEntity (Entity ts) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

toEntity :: Entity ts -> Entity (EntityT (Entity ts)) Source #

(ToEntity a, ToEntity b, EntityT (a :& b) ~ (a ': EntityT b)) => ToEntity (a :& b) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

toEntity :: (a :& b) -> Entity (EntityT (a :& b)) Source #

type family ConcatT (a :: [Type]) (b :: [Type]) where ... Source #

Equations

ConcatT '[] b = b 
ConcatT (a ': as) b = a ': ConcatT as b 

type family IntersectT (a :: [Type]) (b :: [Type]) :: [Type] where ... Source #

Equations

IntersectT '[] b = '[] 
IntersectT (a ': as) b = If (ElemT a b) (a ': IntersectT as b) (IntersectT as b) 

class Intersect (a :: [Type]) (b :: [Type]) where Source #

Methods

intersect :: Entity a -> Entity b -> Entity (IntersectT a b) Source #

Instances

Instances details
Intersect ('[] :: [Type]) b Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

intersect :: Entity '[] -> Entity b -> Entity (IntersectT '[] b) Source #

Intersect' (ElemT a bs) (a ': as) bs => Intersect (a ': as) bs Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

intersect :: Entity (a ': as) -> Entity bs -> Entity (IntersectT (a ': as) bs) Source #

type family DifferenceT (a :: [Type]) (b :: [Type]) :: [Type] where ... Source #

Equations

DifferenceT '[] b = '[] 
DifferenceT (a ': as) b = If (ElemT a b) (DifferenceT as b) (a ': DifferenceT as b) 

class Difference (a :: [Type]) (b :: [Type]) where Source #

Methods

difference :: Entity a -> Entity b -> Entity (DifferenceT a b) Source #

Instances

Instances details
Difference ('[] :: [Type]) b Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

difference :: Entity '[] -> Entity b -> Entity (DifferenceT '[] b) Source #

Difference' (ElemT a bs) (a ': as) bs => Difference (a ': as) bs Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

difference :: Entity (a ': as) -> Entity bs -> Entity (DifferenceT (a ': as) bs) Source #

type family SplitT (a :: [Type]) (b :: [Type]) :: [Type] where ... Source #

Equations

SplitT '[] bs = bs 
SplitT (a ': as) (a ': bs) = SplitT as bs 

class Split (a :: [Type]) (b :: [Type]) where Source #

Methods

split :: Entity b -> (Entity a, Entity (SplitT a b)) Source #

Instances

Instances details
Split ('[] :: [Type]) bs Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

split :: Entity bs -> (Entity '[], Entity (SplitT '[] bs)) Source #

Split as bs => Split (a ': as) (a ': bs) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

split :: Entity (a ': bs) -> (Entity (a ': as), Entity (SplitT (a ': as) (a ': bs))) Source #

concat :: Entity as -> Entity bs -> Entity (ConcatT as bs) Source #

(<&>) :: Entity as -> a -> Entity (a : as) Source #

data a :& b Source #

Constructors

a :& b 

Instances

Instances details
(FromEntity a, FromEntity b, EntityT (a :& b) ~ (a ': EntityT b)) => FromEntity (a :& b) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

fromEntity :: Entity (EntityT (a :& b)) -> a :& b Source #

(ToEntity a, ToEntity b, EntityT (a :& b) ~ (a ': EntityT b)) => ToEntity (a :& b) Source # 
Instance details

Defined in Data.Aztecs.Entity

Methods

toEntity :: (a :& b) -> Entity (EntityT (a :& b)) Source #