finite-polynomial
Safe HaskellNone
LanguageHaskell2010

Data.Functor.Polynomial.Finitary.Tag

Synopsis

Documentation

data FinPolyTag (p :: P) n where Source #

Tag GADT for Ev p.

FinPolyTag p n witnesses that n is the position type of one summand of Ev p.

This gives Ev p an instance of Polynomial from the polynomial-functor package, with Tag (Ev p) = FinPolyTag p.

Constructors

FinPolyEnd :: FinPolyTag 'U Void 
FinPolyStop :: forall (p1 :: P). FinPolyTag ('S p1) Void 
FinPolyGo :: forall (p1 :: P) n. FinPolyTag p1 n -> FinPolyTag ('S p1) n 
FinPolyCons :: forall (p1 :: P) n1. FinPolyTag p1 n1 -> FinPolyTag ('T p1) (Either () n1) 

Instances

Instances details
GCompare (FinPolyTag p :: Type -> Type) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary.Tag

Methods

gcompare :: FinPolyTag p a -> FinPolyTag p b -> GOrdering a b #

GEq (FinPolyTag p :: Type -> Type) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary.Tag

Methods

geq :: FinPolyTag p a -> FinPolyTag p b -> Maybe (a :~: b) #

HasFinitary (FinPolyTag p) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary.Tag

Methods

withFinitary :: FinPolyTag p n -> (Finitary n => r) -> r