Copyright | (C) 2015 The University of Kansas |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Andy Gill |
Stability | Experimental |
Safe Haskell | Safe |
Language | Haskell2010 |
A data type and class for natural transformations.
Newtype for a Natural Transformation
Type Synonym for a Natural Transformation
Conversion functions between the newtype and the synonym
run :: Transformation f g t => t -> forall a. f a -> g a Source
nat :: (forall a. f a -> g a) -> f :~> g Source
nat
builds our natural transformation abstraction out of
a natural transformation function.
Class for Natural Transformations
class Transformation f g t | t -> f g where Source
A (natural) transformation is inside t
, and contains f
and g
(typically Functor
s).
The order of arguments allows the use of GeneralizedNewtypeDeriving
to wrap
a :~>
, but maintain the Transformation
constraint. Thus, #
can be used
on abstract data types.
Transformation * f IO (Object f) Source | |
Transformation k f g ((:~>) k f g) Source |