Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Math.Tools.NaturalTransformation
Synopsis
- newtype (f :: k -> Type) :~> (g :: k -> Type) = NatTrans {
- nattransComponent :: forall (a :: k). f a -> g a
- type MaybeNT m = Maybe :~> m
- type EitherNT a m = Either a :~> m
- type PairNT a m = (,) a :~> m
- type IndexNT a m = (->) a :~> m
- type ListNT m = List :~> m
- type IMT m = I :~> m
- type IOMT m = m :~> IO
- type NondetMT m = m :~> List
- type FailMT m = m :~> Maybe
- type AltMT a m = m :~> Either a
- type FunctorMT a m = m :~> (->) a
- type MonadNT m = (m :*: m) :~> m
- type ComonadNT m = m :~> (m :*: m)
- type TransposeNT m n = (m :*: n) :~> (n :*: m)
- type (::*::) row col elem = ((:==:) row :*: (:==:) col) elem
- failFailMT :: FailMT f
- succeedFailMT :: FailMT I
- returnMT :: Monad m => I :~> m
- extractMT :: Comonad m => m :~> I
- duplicateMT :: Comonad m => m :~> (m :*: m)
- joinMT :: Monad m => (m :*: m) :~> m
- idTrans :: f :~> f
- unitTrans :: Adjunction f g => I :~> (g :*: f)
- counitTrans :: Adjunction f g => (f :*: g) :~> I
- vert :: (g :~> h) -> (f :~> g) -> f :~> h
- horiz :: Functor h => (h :~> k) -> (f :~> g) -> (h :*: f) :~> (k :*: g)
- mapNaturalMatrix :: (Functor f, Functor h) => (f :~> g) -> (h :~> i) -> (a -> b) -> (f :*: h) a -> (g :*: i) b
- data Day f g c = forall a b. Day ((a, b) -> c) (f a) (g b)
- convolve :: (Functor f, Functor g) => Day f g c -> (f :*: g) c
- convolveTrans :: (Functor f, Functor g) => Day f g :~> (f :*: g)
- mapRows :: Functor h => (f :~> g) -> (h :*: f) :~> (h :*: g)
- mapColumns :: (f :~> g) -> (f :*: h) :~> (g :*: h)
- mapMatrixNat :: (Functor f, Functor g) => (f :~> f') -> (g :~> g') -> (a -> b) -> (f :*: g) a -> (f' :*: g') b
- recMap :: Functor f => (f :~> g) -> Rec f -> Rec g
- transformMap :: (Functor f, Functor g) => Coalgebra f a -> (f :~> g) -> Algebra g b -> a -> b
- tmap :: (InitialAlgebra f a, FinalCoalgebra g b) => (f :~> g) -> a -> b
- tapp :: Functor f => (f :~> g) -> (a -> b) -> f a -> g b
- unyoneda :: Category cat => (cat a :~> f) -> f a
- yonedaFunction :: Functor t => t a -> (->) a :~> t
- inverseHoriz :: CoFunctor k => (f :~> k) -> (f' :~> k') -> (f :*: k') :~> (k :*: f')
- firstTrans :: (y -> x) -> (->) (x, d) :~> (->) (y, d)
- reverseList :: List :~> List
- concatList :: (List :*: List) :~> List
- returnTrans :: Monad m => I :~> m
- joinTrans :: Monad m => (m :*: m) :~> m
- swapDimensions :: (Applicative g, Traversable f) => (f :*: g) :~> (g :*: f)
- data f :<~>: g = NaturalIso {
- fwdNaturalIso :: f :~> g
- bckNaturalIso :: g :~> f
- idIso :: f :<~>: f
- symmetricIso :: (g :<~>: f) -> f :<~>: g
- vertIso :: (g :<~>: h) -> (f :<~>: g) -> f :<~>: h
- horizIso :: (Functor f, Functor f') => (f :<~>: f') -> (g :<~>: g') -> (f :*: g) :<~>: (f' :*: g')
- isoMatrix :: (Functor g, Functor g') => (f :<~>: (g :*: h)) -> (g :<~>: g') -> (h :<~>: h') -> f :<~>: (g' :*: h')
- isoMatrix_ :: Functor g' => (f :<~>: ((->) row :*: (->) col)) -> ((->) row :<~>: g') -> ((->) col :<~>: h') -> f :<~>: (g' :*: h')
- outerIso :: Functor g' => ((->) row :<~>: g') -> ((->) col :<~>: h') -> ((->) row :*: (->) col) :<~>: (g' :*: h')
- matrixFrom :: Functor g => (row -> col -> a) -> ((->) row :<~>: g) -> ((->) col :<~>: h) -> (g :*: h) a
- matrixIso :: (Functor f, Functor f', Functor g, Functor g') => (f :<~>: f') -> (g :<~>: g') -> (a :==: b) -> (f :*: g) a :==: (f' :*: g') b
- swapDimensionsIso :: (Traversable f, Traversable g, Applicative f, Applicative g) => (f :*: g) :<~>: (g :*: f)
- runNaturalIso :: (f :<~>: g) -> f a :==: g a
- newtype (f :~~> g) a = NaturalTrans {
- unNatTrans :: f a -> g a
- transformMatrix :: Applicative f' => ((f :~~> f') :*: g) a -> (f' :*: (g :~~> g')) a -> (f :*: g) a -> (f' :*: g') a
- newtype NaturalTransA (arr :: k -> k -> Type) f g a = NaturalTransA {
- unNatTransA :: arr (f a) (g a)
- newtype NatTransA (arr :: k -> k -> Type) f g = NatTransA {
- nattransComponentA :: forall a. arr (f a) (g a)
- idTransA :: Arrow arr => NatTransA arr f f
- horizA :: (Arrow arr, FunctorArrow k arr arr) => NatTransA arr h k -> NatTransA arr f g -> NatTransA arr (h :*: f) (k :*: g)
- vertA :: Arrow arr => NatTransA arr g h -> NatTransA arr f g -> NatTransA arr f h
- invertNatTransA :: NatTransA arr f g -> NatTransA (OpA arr) g f
- coyonedaA :: (Category cat, ArrowApply arr, ArrowChoice arr) => arr (NatTransA arr (OpA cat a) f) (f a)
- unyonedaA :: (Category cat, ArrowApply arr) => arr (NatTransA arr (cat a) f) (f a)
- yonedaA :: (FunctorArrow f arr arr, ArrowApply arr) => f c -> NatTransA arr (arr c) f
- natTransToA :: (f :~> g) -> NatTransA (->) f g
- arrowNatTrans :: NatTransA (->) f g -> f :~> g
Documentation
newtype (f :: k -> Type) :~> (g :: k -> Type) Source #
Constructors
NatTrans | |
Fields
|
failFailMT :: FailMT f Source #
succeedFailMT :: FailMT I Source #
counitTrans :: Adjunction f g => (f :*: g) :~> I Source #
mapNaturalMatrix :: (Functor f, Functor h) => (f :~> g) -> (h :~> i) -> (a -> b) -> (f :*: h) a -> (g :*: i) b Source #
mapMatrixNat :: (Functor f, Functor g) => (f :~> f') -> (g :~> g') -> (a -> b) -> (f :*: g) a -> (f' :*: g') b Source #
transformMap :: (Functor f, Functor g) => Coalgebra f a -> (f :~> g) -> Algebra g b -> a -> b Source #
yonedaFunction :: Functor t => t a -> (->) a :~> t Source #
firstTrans :: (y -> x) -> (->) (x, d) :~> (->) (y, d) Source #
swapDimensions :: (Applicative g, Traversable f) => (f :*: g) :~> (g :*: f) Source #
Constructors
NaturalIso | |
Fields
|
symmetricIso :: (g :<~>: f) -> f :<~>: g Source #
horizIso :: (Functor f, Functor f') => (f :<~>: f') -> (g :<~>: g') -> (f :*: g) :<~>: (f' :*: g') Source #
isoMatrix :: (Functor g, Functor g') => (f :<~>: (g :*: h)) -> (g :<~>: g') -> (h :<~>: h') -> f :<~>: (g' :*: h') Source #
isoMatrix_ :: Functor g' => (f :<~>: ((->) row :*: (->) col)) -> ((->) row :<~>: g') -> ((->) col :<~>: h') -> f :<~>: (g' :*: h') Source #
outerIso :: Functor g' => ((->) row :<~>: g') -> ((->) col :<~>: h') -> ((->) row :*: (->) col) :<~>: (g' :*: h') Source #
matrixFrom :: Functor g => (row -> col -> a) -> ((->) row :<~>: g) -> ((->) col :<~>: h) -> (g :*: h) a Source #
matrixIso :: (Functor f, Functor f', Functor g, Functor g') => (f :<~>: f') -> (g :<~>: g') -> (a :==: b) -> (f :*: g) a :==: (f' :*: g') b Source #
swapDimensionsIso :: (Traversable f, Traversable g, Applicative f, Applicative g) => (f :*: g) :<~>: (g :*: f) Source #
runNaturalIso :: (f :<~>: g) -> f a :==: g a Source #
Constructors
NaturalTrans | |
Fields
|
transformMatrix :: Applicative f' => ((f :~~> f') :*: g) a -> (f' :*: (g :~~> g')) a -> (f :*: g) a -> (f' :*: g') a Source #
newtype NaturalTransA (arr :: k -> k -> Type) f g a Source #
Constructors
NaturalTransA | |
Fields
|
newtype NatTransA (arr :: k -> k -> Type) f g Source #
Constructors
NatTransA | |
Fields
|
horizA :: (Arrow arr, FunctorArrow k arr arr) => NatTransA arr h k -> NatTransA arr f g -> NatTransA arr (h :*: f) (k :*: g) Source #
invertNatTransA :: NatTransA arr f g -> NatTransA (OpA arr) g f Source #
coyonedaA :: (Category cat, ArrowApply arr, ArrowChoice arr) => arr (NatTransA arr (OpA cat a) f) (f a) Source #
For exposition of coyonedaA, see Bartosz Milewski's youtube videos https://www.youtube.com/watch?v=p_ydgYm9-yg
yonedaA :: (FunctorArrow f arr arr, ArrowApply arr) => f c -> NatTransA arr (arr c) f Source #
natTransToA :: (f :~> g) -> NatTransA (->) f g Source #
arrowNatTrans :: NatTransA (->) f g -> f :~> g Source #