finite-polynomial
Safe HaskellNone
LanguageHaskell2010

Data.Polynomial.Functor

Synopsis

Documentation

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

Constructors

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

Instances

Instances details
Foldable (Ev p) Source # 
Instance details

Defined in Data.Polynomial.Functor

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.Polynomial.Functor

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) #

Functor (Ev p) Source # 
Instance details

Defined in Data.Polynomial.Functor

Methods

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

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

SingI p => PolynomialFunctor (Ev p) Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (Ev p) 
Instance details

Defined in Data.Polynomial.Functor

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 #

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

Defined in Data.Polynomial.Functor

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.Polynomial.Functor

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.Polynomial.Functor

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.Polynomial.Functor

type PolyRep (Ev p) = p

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

Constructors

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

Instances

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

Defined in Data.Polynomial.Functor

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.Polynomial.Functor

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.Polynomial.Functor

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.Polynomial.Functor

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 #

class Functor f => PolynomialFunctor (f :: Type -> Type) where Source #

Non-zero polynomial functor

Associated Types

type PolyRep (f :: Type -> Type) :: Poly Source #

Methods

sPolyRep :: Sing (PolyRep f) Source #

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

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

Instances

Instances details
PolynomialFunctor Identity Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep Identity 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep Identity = 'T 'U
PolynomialFunctor Par1 Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep Par1 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep Par1 = 'T 'U
PolynomialFunctor Maybe Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep Maybe 
Instance details

Defined in Data.Polynomial.Functor

PolynomialFunctor (Proxy :: Type -> Type) Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (Proxy :: Type -> Type) 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep (Proxy :: Type -> Type) = 'U

Methods

sPolyRep :: Sing (PolyRep (Proxy :: Type -> Type)) Source #

toPoly :: Proxy x -> Ev (PolyRep (Proxy :: Type -> Type)) x Source #

fromPoly :: Ev (PolyRep (Proxy :: Type -> Type)) x -> Proxy x Source #

PolynomialFunctor (U1 :: Type -> Type) Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (U1 :: Type -> Type) 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep (U1 :: Type -> Type) = 'U

Methods

sPolyRep :: Sing (PolyRep (U1 :: Type -> Type)) Source #

toPoly :: U1 x -> Ev (PolyRep (U1 :: Type -> Type)) x Source #

fromPoly :: Ev (PolyRep (U1 :: Type -> Type)) x -> U1 x Source #

SingI p => PolynomialFunctor (Ev p) Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (Ev p) 
Instance details

Defined in Data.Polynomial.Functor

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 #

(Generic1 f, PolynomialFunctor (Rep1 f)) => PolynomialFunctor (Generically1 f) Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (Generically1 f) 
Instance details

Defined in Data.Polynomial.Functor

PolynomialFunctor f => PolynomialFunctor (Rec1 f) Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (Rec1 f) 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep (Rec1 f) = PolyRep f

Methods

sPolyRep :: Sing (PolyRep (Rec1 f)) Source #

toPoly :: Rec1 f x -> Ev (PolyRep (Rec1 f)) x Source #

fromPoly :: Ev (PolyRep (Rec1 f)) x -> Rec1 f x Source #

PolynomialFunctor f => PolynomialFunctor (ViaPolynomial e f) Source # 
Instance details

Defined in Data.Polynomial.Functor.Deriving

Associated Types

type PolyRep (ViaPolynomial e f) 
Instance details

Defined in Data.Polynomial.Functor.Deriving

(PolynomialFunctor f, PolynomialFunctor g) => PolynomialFunctor (f :*: g) Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (f :*: g) 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep (f :*: g) = PolyRep f * PolyRep g

Methods

sPolyRep :: Sing (PolyRep (f :*: g)) Source #

toPoly :: (f :*: g) x -> Ev (PolyRep (f :*: g)) x Source #

fromPoly :: Ev (PolyRep (f :*: g)) x -> (f :*: g) x Source #

(PolynomialFunctor f, PolynomialFunctor g) => PolynomialFunctor (f :+: g) Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (f :+: g) 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep (f :+: g) = PolyRep f + PolyRep g

Methods

sPolyRep :: Sing (PolyRep (f :+: g)) Source #

toPoly :: (f :+: g) x -> Ev (PolyRep (f :+: g)) x Source #

fromPoly :: Ev (PolyRep (f :+: g)) x -> (f :+: g) x Source #

PolynomialFunctor (K1 i () :: Type -> Type) Source #

Quick&dirty alternative to Finitary c => PolynomialFunctor (K1 i c)

Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (K1 i () :: Type -> Type) 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep (K1 i () :: Type -> Type) = 'U

Methods

sPolyRep :: Sing (PolyRep (K1 i () :: Type -> Type)) Source #

toPoly :: K1 i () x -> Ev (PolyRep (K1 i () :: Type -> Type)) x Source #

fromPoly :: Ev (PolyRep (K1 i () :: Type -> Type)) x -> K1 i () x Source #

PolynomialFunctor (K1 i Bool :: Type -> Type) Source #

Quick&dirty alternative to Finitary c => PolynomialFunctor (K1 i c)

Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (K1 i Bool :: Type -> Type) 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep (K1 i Bool :: Type -> Type) = 'S 'U

Methods

sPolyRep :: Sing (PolyRep (K1 i Bool :: Type -> Type)) Source #

toPoly :: K1 i Bool x -> Ev (PolyRep (K1 i Bool :: Type -> Type)) x Source #

fromPoly :: Ev (PolyRep (K1 i Bool :: Type -> Type)) x -> K1 i Bool x Source #

(PolynomialFunctor f, PolynomialFunctor g) => PolynomialFunctor (f :.: g) Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (f :.: g) 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep (f :.: g) = PolyRep f << PolyRep g

Methods

sPolyRep :: Sing (PolyRep (f :.: g)) Source #

toPoly :: (f :.: g) x -> Ev (PolyRep (f :.: g)) x Source #

fromPoly :: Ev (PolyRep (f :.: g)) x -> (f :.: g) x Source #

PolynomialFunctor f => PolynomialFunctor (M1 i m f) Source # 
Instance details

Defined in Data.Polynomial.Functor

Associated Types

type PolyRep (M1 i m f) 
Instance details

Defined in Data.Polynomial.Functor

type PolyRep (M1 i m f) = PolyRep f

Methods

sPolyRep :: Sing (PolyRep (M1 i m f)) Source #

toPoly :: M1 i m f x -> Ev (PolyRep (M1 i m f)) x Source #

fromPoly :: Ev (PolyRep (M1 i m f)) x -> M1 i m f x Source #

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

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

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

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

toComp :: forall (p :: Poly) (q :: Poly) x. SPoly p -> SPoly q -> Ev (p << q) x -> Ev p (Ev q x) Source #

fromComp :: forall (p :: Poly) (q :: Poly) x. SPoly p -> SPoly q -> Ev p (Ev q x) -> Ev (p << q) x Source #