kan-extensions-5.2: Kan extensions, Kan lifts, the Yoneda lemma, and (co)density (co)monads

Copyright (C) 2011-2016 Edward Kmett BSD-style (see the file LICENSE) Edward Kmett provisional MPTCs, fundeps Trustworthy Haskell98

Data.Functor.Yoneda

Contents

Description

The covariant form of the Yoneda lemma states that f is naturally isomorphic to Yoneda f.

This is described in a rather intuitive fashion by Dan Piponi in

http://blog.sigfpe.com/2006/11/yoneda-lemma.html

Synopsis

# Documentation

newtype Yoneda f a Source #

Yoneda f a can be viewed as the partial application of fmap to its second argument.

Constructors

 Yoneda FieldsrunYoneda :: forall b. (a -> b) -> f b
Instances

liftYoneda :: Functor f => f a -> Yoneda f a Source #

The natural isomorphism between f and Yoneda f given by the Yoneda lemma is witnessed by liftYoneda and lowerYoneda

liftYoneda . lowerYoneda ≡ id
lowerYoneda . liftYoneda ≡ id

lowerYoneda (liftYoneda fa) =         -- definition
lowerYoneda (Yoneda (f -> fmap f a)) -- definition
(f -> fmap f fa) id                  -- beta reduction
fmap id fa                            -- functor law
fa

lift = liftYoneda


lowerYoneda :: Yoneda f a -> f a Source #

maxF :: (Functor f, Ord (f a)) => Yoneda f a -> Yoneda f a -> Yoneda f a Source #

minF :: (Functor f, Ord (f a)) => Yoneda f a -> Yoneda f a -> Yoneda f a Source #

maxM :: (Monad m, Ord (m a)) => Yoneda m a -> Yoneda m a -> Yoneda m a Source #

minM :: (Monad m, Ord (m a)) => Yoneda m a -> Yoneda m a -> Yoneda m a Source #

# as a right Kan extension

yonedaToRan :: Yoneda f a -> Ran Identity f a Source #

Yoneda f can be viewed as the right Kan extension of f along the Identity functor.

yonedaToRan . ranToYoneda ≡ id
ranToYoneda . yonedaToRan ≡ id