| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Polynomial.Functor.Deriving
Synopsis
- newtype ViaPolynomial (e :: Poly -> Type -> Type) (f :: Type -> Type) a = ViaPolynomial {
- unwrapViaPolynomial :: f a
- newtype Zippy (p :: Poly) x = Zippy {}
- newtype Aligney (p :: Poly) x = Aligney {
- runAligney :: Ev p x
Documentation
newtype ViaPolynomial (e :: Poly -> Type -> Type) (f :: Type -> Type) a Source #
Generic Deriving
Constructors
| ViaPolynomial | |
Fields
| |
Instances
newtype Zippy (p :: Poly) x Source #
Any polynomial functor can have a "zippy" applicative instance.Ev p
Example
>>>type P = 'S ('T ('S ('T 'U))) -- P(x) = 1 + x + x^2>>>pure 0 :: Zippy P IntZippy {runZippy = Go (0 ::: Go (0 ::: End))}>>>fx = Zippy $ Go ("A" ::: Go ("a" ::: End)) :: Zippy P String>>>fy = Zippy $ Go ("B" ::: Stop) :: Zippy P String>>>fz = Zippy $ Stop :: Zippy P String>>>(++) <$> fx <*> fyZippy {runZippy = Go ("AB" ::: Stop)}>>>(++) <$> fx <*> fzZippy {runZippy = Stop}>>>(++) <$> fy <*> fzZippy {runZippy = Stop}
Instances
| Foldable (Zippy p) Source # | |
Defined in Data.Polynomial.Functor.Deriving Methods fold :: Monoid m => Zippy p m -> m # foldMap :: Monoid m => (a -> m) -> Zippy p a -> m # foldMap' :: Monoid m => (a -> m) -> Zippy p a -> m # foldr :: (a -> b -> b) -> b -> Zippy p a -> b # foldr' :: (a -> b -> b) -> b -> Zippy p a -> b # foldl :: (b -> a -> b) -> b -> Zippy p a -> b # foldl' :: (b -> a -> b) -> b -> Zippy p a -> b # foldr1 :: (a -> a -> a) -> Zippy p a -> a # foldl1 :: (a -> a -> a) -> Zippy p a -> a # elem :: Eq a => a -> Zippy p a -> Bool # maximum :: Ord a => Zippy p a -> a # minimum :: Ord a => Zippy p a -> a # | |
| Traversable (Zippy p) Source # | |
Defined in Data.Polynomial.Functor.Deriving | |
| SingI p => Applicative (Zippy p) Source # | |
| Functor (Zippy p) Source # | |
| Show x => Show (Zippy p x) Source # | |
| Eq x => Eq (Zippy p x) Source # | |
| Ord x => Ord (Zippy p x) Source # | |
Defined in Data.Polynomial.Functor.Deriving | |
newtype Aligney (p :: Poly) x Source #
Any polynomial functor with no constant term, , can have an "aligney" applicative and monad instance.Ev (T p)
Example
>>>type Q = 'T ('S ('T 'U)) -- Q(x) = x + x^2>>>pure 0 :: Aligney Q IntAligney {runAligney = 0 ::: Stop}>>>fx = Aligney $ "A" ::: Go ("a" ::: End) :: Aligney Q String>>>fy = Aligney $ "B" ::: Go ("b" ::: End) :: Aligney Q String>>>fz = Aligney $ "C" ::: Stop :: Aligney Q String>>>(++) <$> fx <*> fyAligney {runAligney = "AB" ::: Go ("ab" ::: End)}>>>(++) <$> fx <*> fzAligney {runAligney = "AC" ::: Go ("aC" ::: End)}>>>(++) <$> fy <*> fzAligney {runAligney = "BC" ::: Go ("bC" ::: End)}>>>fx >>= \x -> if x == "A" then fz else fyAligney {runAligney = "C" ::: Go ("b" ::: End)}
Constructors
| Aligney | |
Fields
| |
Instances
| Foldable (Aligney p) Source # | |
Defined in Data.Polynomial.Functor.Deriving Methods fold :: Monoid m => Aligney p m -> m # foldMap :: Monoid m => (a -> m) -> Aligney p a -> m # foldMap' :: Monoid m => (a -> m) -> Aligney p a -> m # foldr :: (a -> b -> b) -> b -> Aligney p a -> b # foldr' :: (a -> b -> b) -> b -> Aligney p a -> b # foldl :: (b -> a -> b) -> b -> Aligney p a -> b # foldl' :: (b -> a -> b) -> b -> Aligney p a -> b # foldr1 :: (a -> a -> a) -> Aligney p a -> a # foldl1 :: (a -> a -> a) -> Aligney p a -> a # toList :: Aligney p a -> [a] # length :: Aligney p a -> Int # elem :: Eq a => a -> Aligney p a -> Bool # maximum :: Ord a => Aligney p a -> a # minimum :: Ord a => Aligney p a -> a # | |
| Traversable (Aligney p) Source # | |
Defined in Data.Polynomial.Functor.Deriving | |
| SingI p => Applicative (Aligney ('T p)) Source # | |
Defined in Data.Polynomial.Functor.Deriving Methods pure :: a -> Aligney ('T p) a # (<*>) :: Aligney ('T p) (a -> b) -> Aligney ('T p) a -> Aligney ('T p) b # liftA2 :: (a -> b -> c) -> Aligney ('T p) a -> Aligney ('T p) b -> Aligney ('T p) c # (*>) :: Aligney ('T p) a -> Aligney ('T p) b -> Aligney ('T p) b # (<*) :: Aligney ('T p) a -> Aligney ('T p) b -> Aligney ('T p) a # | |
| Functor (Aligney p) Source # | |
| SingI p => Monad (Aligney ('T p)) Source # | |
| Show x => Show (Aligney p x) Source # | |
| Eq x => Eq (Aligney p x) Source # | |
| Ord x => Ord (Aligney p x) Source # | |
Defined in Data.Polynomial.Functor.Deriving | |