finite-polynomial
Safe HaskellNone
LanguageHaskell2010

Data.Functor.Polynomial.Finitary

Documentation

data Ev (p :: P) x where Source #

Constructors

End :: forall x. Ev 'U x 
Stop :: forall (p1 :: P) x. Ev ('S p1) x 
Go :: forall (p1 :: P) x. Ev p1 x -> Ev ('S p1) x 
(:::) :: forall x (p1 :: P). x -> Ev p1 x -> Ev ('T p1) x infixr 7 

Instances

Instances details
SingI p => FinitaryPolynomial (Ev p) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary.Class

Associated Types

type PolyRep (Ev p) 
Instance details

Defined in Data.Functor.Polynomial.Finitary.Class

type PolyRep (Ev p) = p

Methods

sPolyRep :: Sing (PolyRep (Ev p)) Source #

toPoly :: Ev p x -> Ev (PolyRep (Ev p)) x Source #

fromPoly :: Ev (PolyRep (Ev p)) x -> Ev p x Source #

Functor (Ev p) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Methods

fmap :: (a -> b) -> Ev p a -> Ev p b #

(<$) :: a -> Ev p b -> Ev p a #

Foldable (Ev p) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Methods

fold :: Monoid m => Ev p m -> m #

foldMap :: Monoid m => (a -> m) -> Ev p a -> m #

foldMap' :: Monoid m => (a -> m) -> Ev p a -> m #

foldr :: (a -> b -> b) -> b -> Ev p a -> b #

foldr' :: (a -> b -> b) -> b -> Ev p a -> b #

foldl :: (b -> a -> b) -> b -> Ev p a -> b #

foldl' :: (b -> a -> b) -> b -> Ev p a -> b #

foldr1 :: (a -> a -> a) -> Ev p a -> a #

foldl1 :: (a -> a -> a) -> Ev p a -> a #

toList :: Ev p a -> [a] #

null :: Ev p a -> Bool #

length :: Ev p a -> Int #

elem :: Eq a => a -> Ev p a -> Bool #

maximum :: Ord a => Ev p a -> a #

minimum :: Ord a => Ev p a -> a #

sum :: Num a => Ev p a -> a #

product :: Num a => Ev p a -> a #

Traversable (Ev p) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Methods

traverse :: Applicative f => (a -> f b) -> Ev p a -> f (Ev p b) #

sequenceA :: Applicative f => Ev p (f a) -> f (Ev p a) #

mapM :: Monad m => (a -> m b) -> Ev p a -> m (Ev p b) #

sequence :: Monad m => Ev p (m a) -> m (Ev p a) #

Polynomial (Ev p) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Associated Types

type Tag (Ev p) 
Instance details

Defined in Data.Functor.Polynomial.Finitary

type Tag (Ev p) = FinPolyTag p

Methods

toPoly :: Ev p x -> Poly (Tag (Ev p)) x

fromPoly :: Poly (Tag (Ev p)) x -> Ev p x

Show x => Show (Ev p x) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Methods

showsPrec :: Int -> Ev p x -> ShowS #

show :: Ev p x -> String #

showList :: [Ev p x] -> ShowS #

Eq x => Eq (Ev p x) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Methods

(==) :: Ev p x -> Ev p x -> Bool #

(/=) :: Ev p x -> Ev p x -> Bool #

Ord x => Ord (Ev p x) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Methods

compare :: Ev p x -> Ev p x -> Ordering #

(<) :: Ev p x -> Ev p x -> Bool #

(<=) :: Ev p x -> Ev p x -> Bool #

(>) :: Ev p x -> Ev p x -> Bool #

(>=) :: Ev p x -> Ev p x -> Bool #

max :: Ev p x -> Ev p x -> Ev p x #

min :: Ev p x -> Ev p x -> Ev p x #

type PolyRep (Ev p) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary.Class

type PolyRep (Ev p) = p
type Tag (Ev p) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

type Tag (Ev p) = FinPolyTag p

data Ev₀ (p :: P₀) x where Source #

Constructors

MakeEv₀ :: forall (p1 :: P) x. Ev p1 x -> Ev₀ ('NZ p1) x 

Instances

Instances details
Functor (Ev₀ p) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Methods

fmap :: (a -> b) -> Ev₀ p a -> Ev₀ p b #

(<$) :: a -> Ev₀ p b -> Ev₀ p a #

Show x => Show (Ev₀ p x) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Methods

showsPrec :: Int -> Ev₀ p x -> ShowS #

show :: Ev₀ p x -> String #

showList :: [Ev₀ p x] -> ShowS #

Eq x => Eq (Ev₀ p x) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Methods

(==) :: Ev₀ p x -> Ev₀ p x -> Bool #

(/=) :: Ev₀ p x -> Ev₀ p x -> Bool #

Ord x => Ord (Ev₀ p x) Source # 
Instance details

Defined in Data.Functor.Polynomial.Finitary

Methods

compare :: Ev₀ p x -> Ev₀ p x -> Ordering #

(<) :: Ev₀ p x -> Ev₀ p x -> Bool #

(<=) :: Ev₀ p x -> Ev₀ p x -> Bool #

(>) :: Ev₀ p x -> Ev₀ p x -> Bool #

(>=) :: Ev₀ p x -> Ev₀ p x -> Bool #

max :: Ev₀ p x -> Ev₀ p x -> Ev₀ p x #

min :: Ev₀ p x -> Ev₀ p x -> Ev₀ p x #

toSum :: forall (p :: P) (q :: P) x. Sing p -> Sing q -> Ev (p + q) x -> (Ev p :+: Ev q) x Source #

fromSum :: forall (p :: P) (q :: P) x. Sing p -> Sing q -> (Ev p :+: Ev q) x -> Ev (p + q) x Source #

toProduct :: forall (p :: P) (q :: P) x. Sing p -> Sing q -> Ev (p * q) x -> (Ev p :*: Ev q) x Source #

fromProduct :: forall (p :: P) (q :: P) x. Sing p -> Sing q -> (Ev p :*: Ev q) x -> Ev (p * q) x Source #

toComp :: forall (p :: P) (q :: P) x. SingP p -> SingP q -> Ev (p << q) x -> Ev p (Ev q x) Source #

fromComp :: forall (p :: P) (q :: P) x. SingP p -> SingP q -> Ev p (Ev q x) -> Ev (p << q) x Source #