Copyright | (C) 2018 Brian Mckenna |
---|---|

License | BSD-style (see the file LICENSE) |

Maintainer | Edward Kmett <ekmett@gmail.com> |

Stability | provisional |

Portability | portable |

Safe Haskell | None |

Language | Haskell2010 |

The Day convolution of two invariant functors is an invariant functor.

## Synopsis

- data Day f g a = forall b c. Day (f b) (g c) (b -> c -> a) (a -> (b, c))
- day :: f a -> g b -> Day f g (a, b)
- assoc :: Day f (Day g h) a -> Day (Day f g) h a
- disassoc :: Day (Day f g) h a -> Day f (Day g h) a
- swapped :: Day f g a -> Day g f a
- intro1 :: f a -> Day Identity f a
- intro2 :: f a -> Day f Identity a
- elim1 :: Invariant f => Day Identity f a -> f a
- elim2 :: Invariant f => Day f Identity a -> f a
- trans1 :: (forall x. f x -> g x) -> Day f h a -> Day g h a
- trans2 :: (forall x. g x -> h x) -> Day f g a -> Day f h a
- toContravariant :: Day f g a -> Day f g a
- toCovariant :: Day f g a -> Day f g a

# Documentation

The Day convolution of two invariant functors.

forall b c. Day (f b) (g c) (b -> c -> a) (a -> (b, c)) |

toContravariant :: Day f g a -> Day f g a Source #

Drop the covariant part of the Day convolution.

toCovariant :: Day f g a -> Day f g a Source #

Drop the contravariant part of the Day convolution.