profunctor optics and the yoneda lemma...profunctor optics and the yoneda lemma 4 the yoneda lemma,...

Post on 18-Apr-2020

9 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Profunctor Optics and the

Yoneda Lemma

Jeremy Gibbons

joint work with Guillaume Boisseau

WG2.1#77, July 2018

Profunctor Optics and the Yoneda Lemma 2

1. Nobuo Yoneda

• 1930–1996

• Professor of TheoreticalFoundations of InformationScience at University ofTokyo

• member of IFIP WG2.1,contributor to discussionsabout Algol 68, major rolein Algol N

• but primarily an algebraist

Profunctor Optics and the Yoneda Lemma 3

2. The Yoneda Lemma

Formally,

For C a locally small category, �C;Set��C�A;��; F� ’ F�A�,naturally in A 2 C and F 2 �C;Set�.

From left to right, take nt � : C�A;�� :! F to �A�idA� 2 F�A�.From right to left, take element x 2 F�A� to nt � such that �B�f � � F�f ��x�.

As a special case, the Yoneda Embedding:

The functor Y : Cop ! �C; Set� is full and faithful, and injectiveon objects.

�C;Set��C�A;��;C�B;��� ’ C�B;A�

Quite fearsomely terse!

Profunctor Optics and the Yoneda Lemma 4

The Yoneda Lemma, philosophically

• roughly, ‘a thing is determined by its relationships with other things’

• you can tell a lot about a person by the company they keep

• in Japanese,�� (‘ningen’, human being) constructed from� (‘nin’, person) and� (‘gen’, between),

• in Euclidean geometry, a point ‘is’ just the lines that meet there

• in poetry, c’est l’execution du poeme qui est le poeme (Valery)

• in music, die Idee der Interpretation gehort zur Musik selber und istihr nicht akzidentiell (Adorno)

• in sculpture, need to see a work from all anglesin order to understand it (Mazzola)

Profunctor Optics and the Yoneda Lemma 5

The Yoneda Lemma, computationally

Approximate category Set by Haskell:

• objects A are types, arrows f are functions• functors are represented by the type class Functor• natural transformations are polymorphic functions.

Then Yoneda representation Yo f a ’ f a of functorial datatypes:

data Yo f a � Yo funYo ::8x : �a ! x�! f xgfromYo :: Yo f a ! f a

fromYo y � unYo y id -- apply to identity

toYo :: Functor f ) f a ! Yo f a

toYo x � Yo ��h! fmap h x� -- use functorial action

Also kind of dual, ‘co-Yoneda’: �9x : �x ! a; f x�� ’ f a for functor f .

Profunctor Optics and the Yoneda Lemma 6

Co-Yoneda

For functor F and object A:

F�A� ’ �8X : �A! X �! F�X ��

Now consider one half of this iso:

8A : F�A�! �8X : �A! X �! F�X ��’ 8A : 8X : F�A�! �A! X �! F�X �’ 8A : 8X : �F�A�� �A! X ��! F�X �’ 8X : 8A : �F�A�� �A! X ��! F�X �’ 8X : �9A : F�A�� �A! X ��! F�X �

and indeed, for functor F and object X :

�9A : F�A�� �A! X �� ’ F�X �

But even for non-functor F , lhs is functorial.

Profunctor Optics and the Yoneda Lemma 7

IoT toaster

Signature of commands for remote interaction:

data Command ::� ! � where

Say :: String ! Command ��Toast :: Int ! Command ��Sense :: �� ! Command Int

GADT, but not a functor; so no free monad.

Co-Yoneda trick to the rescue:

data Action a � 9r : A �Command r; r ! a�

Profunctor Optics and the Yoneda Lemma 8

The Yoneda Lemma, familiarly (1)

Proof by indirect inequality or indirect order

�b 6 a�a �8c : �a 6 c�) �b 6 c��

is the Yoneda Embedding in category Pre�6�:

�Pre�6�;Set��Pre�6��a;��;Pre�6��b;��� ’ Pre�6��b;���a�� Pre�6��b;a�

• homset Pre�A;6��b;a� is a ‘thin set’: singleton or empty

• homfunctor Pre�A;6��a;�� takes c 2 A to singleton set when a 6 c,empty otherwise

• nt � : Pre�A;6��a;�� :! Pre�A;6��b;�� isfunction family �c : Pre�A;6��a; c�! Pre�A;6��b; c�

• so �c is a witness that if Pre�A;6��a; c� 6� ; then Pre�A;6��b; c� 6� ;

Profunctor Optics and the Yoneda Lemma 9

The Yoneda Lemma, familiarly (2)

• any functor F preserves isos:

F�f � � F�g� � id a F�f � g� � F�id�( f � g � id

• full and faithful functor also reflects isos

• Yoneda functor C��;�� is full and faithful; so

�C�B;�� ’ C�A;���a �A ’ B�a �C��;A� ’ C��;B��

in particular for C � Pre�6�, the rule of indirect equality:

�b � a�a �8c : �a 6 c�a �b 6 c��

Profunctor Optics and the Yoneda Lemma 10

The Yoneda Lemma, familiarly (3)

Cayley’s Theorem

every group G is isomorphic to a subgroup of the symmetricgroup acting on G

and similarly

every monoid is isomorphic to a monoid of endomorphisms

�M ;�; e� ’ �f�m�� jm 2 Mg; ���; id�

and similarly,

every poset isomorphic to a poset of principal ideals

Profunctor Optics and the Yoneda Lemma 11

Monoid as category

Monoid �M ;�; e� induces category M:

• precisely one object �

• arrows M��;�� � M

• identity id� � e

• composition m � n �m� n

Profunctor Optics and the Yoneda Lemma 12

Yoneda embedding

�C; Set��C�A;��;C�B;��� ’ C�B;A�

(left to right: apply to identity; right to left: functorial action).

Specialize to

�M;Set��M��;��;M��;��� ’M��;�� � M

We’ll show lhs equivalent to monoid

���M�; ���; id�

where ��M� � f��m� jm 2 Mg.

Profunctor Optics and the Yoneda Lemma 13

Homfunctor, natural transformations

M has a single homset M��;��. Homfunctor M��;�� is:

M��;����� �M��;�� � M

M��;���m :� ! �� � �m�� : M ! M

Nt � : M��;�� :!M��;�� is singleton family of arrows

�� : M��;��!M��;�� � M ! M

such that, for m :� ! �,

�� �M��;m� �M��;m� ���a

�� � �m�� � �m�� ���a

8n : ���m� n� �m� ����n��

Profunctor Optics and the Yoneda Lemma 14

Bijection

Let ��p� 2 ��M�. Then

��p� �m� n���m� n�� p

� �� associativity ��m� �n� p��

m� ���p� n�

ie ��p� a nt. Conversely, let � : M��;�� :!M��;��; then:

���m� � �� �m� e� �m����e�

ie �� � �����e�� 2 ��M�.

(Also need to check that transforms are homomorphisms, and inverses.)

Profunctor Optics and the Yoneda Lemma 15

3. Optics: lenses and prisms

• the view–update problem in databases

• similarly in UI design, MVC architecture

• lens combinators (Foster, Pierce)

• compositional references (Kagawa, Oles)

V

V 0

S

S0

Profunctor Optics and the Yoneda Lemma 16

Lenses

A view onto a product type:

data Lens a b s t �Lens fview :: s ! a;

update :: s � b ! t g

eg projection from pair:

fstLens :: Lens �a� c� �b � c� a b

fstLens � Lens vw up where

vw �a; c� � a

up ��a; c�;a0� � �a0; c�

B

A

T

Sview

update

Profunctor Optics and the Yoneda Lemma 17

Prisms

A view onto a sum type:

data Prism a b s t �Prism fmatch :: s ! t � a;

build :: b ! t g

eg onto optional value:

the :: Prism �Maybe a� �Maybe b� a b

the � Prism mt bd where

mt �Just a� � Right a

mt Nothing � Left Nothing

bd b � Just b

B

A

T

Smatch

build

Profunctor Optics and the Yoneda Lemma 18

Adapters

Common specialization, foradapting interfaces:

data Adapter a b s t �Adapter ffrom :: s ! a;

to :: b ! t g

eg two variants via a Boolean flag:

swap :: Adapter �a� a� �a0 � a0� �Bool � a� �Bool � a0�swap � Adapter f t where

f �Left a� � �True;a�f �Right a� � �False;a�t �b;a� � if b then Left a else Right a

B

A

T

Sfrom

to

Profunctor Optics and the Yoneda Lemma 19

4. Profunctors

Formally, functors Cop � C! Set.Informally, transformers, which consume and produce:

class Profunctor p where

dimap :: �c ! a�! �b ! d�! p a b ! p c d

Generalizations for coherence with product and with sum:

class Profunctor p ) Cartesian p where

first :: p a b ! p �a� c� �b � c�

class Profunctor p ) Cocartesian p where

left :: p a b ! p �a� c� �b � c�

Plain functions ! (homfunctors) are the canonical instance.

A

B

Profunctor Optics and the Yoneda Lemma 20

Profunctor optics

Profunctor optic liftscomponent transformer P A B tocomposite transformer P S T , uniformlyfor all profunctors P of a certain type.

type AdapterP a b s t � 8p : Profunctor p ) p a b ! p s t

Profunctor lens works for all cartesian profunctors:

type LensP a b s t � 8p : Cartesian p ) p a b ! p s t

Profunctor prism works for all cocartesian profunctors:

type PrismP a b s t � 8p : Cocartesian p ) p a b ! p s t

Optics are now just ordinary functions, so compose ordinarily.

B

A

T

S

Profunctor Optics and the Yoneda Lemma 21

5. Double Yoneda Embedding

Key insight, by Bartosz Milewski:

��C; Set�;Set�����A; ���B� ’ C�A;B� ���

since by three applications of Yoneda we have:

��C;Set�; Set�����A; ���B�’ �� Yoneda Lemma: F�X � ’ �C;Set��C�X ;��; F� ����C;Set�; Set���C; Set��C�A;��;��; �C;Set��C�B;��;���’ �� Yoneda Embedding ���C; Set��C�B;��;C�A;���’ �� Yoneda Embedding ��C�A;B�

Profunctor Optics and the Yoneda Lemma 22

Double Yoneda Embedding, computationally

In Haskell, taking C � Set, this says:

�8f : Functor f ) f a ! f b� ’ �a ! b�

Indeed,

fromFun :: �8f : Functor f ) f a ! f b�! �a ! b�fromFun � � unId �� � Id -- apply to identity

toFun :: �a ! b�! �8f : Functor f ) f a ! f b�toFun � fmap -- use functorial action

are inverses.

But the result holds in any category.

Profunctor Optics and the Yoneda Lemma 23

Deriving profunctor adapters using Yoneda

Concrete adapters over C are parallel but opposite arrows:

A Soo

B // T

Introduce synonym Ada for category Cop � C.Then a :: Adapter A B S T is an arrow a 2 Ada��A;B�; �S;T��.

Profunctors are functors Cop � C! Set, ie Ada ! Set.

Double Yoneda ��� gives:

�8P : Profunctor P ) P A B ! P S T� ’ Ada��A;B�; �S;T��

—that is, AdapterP A B S T ’ Adapter A B S T !

Profunctor Optics and the Yoneda Lemma 24

Deriving profunctor lenses using Yoneda

Category Lens over C has same objects as Cop � C, but arrows

Lens��A;B�; �S;T�� � 9C 2 C : C�S;A� C�� C�B � C;T�

(formally, a co-end). These are equivalent to concrete lenses (1).

Moreover, functors P : Lens ! Set are Cartesian profunctors (2).

Double Yoneda ��� again gives:

�8P : Cartesian P ) P A B ! P S T� ’ Lens��A;B�; �S;T��

—that is, LensP A B S T ’ Lens A B S T .

And dually for prisms.

Profunctor Optics and the Yoneda Lemma 25

Proof obligation (1)

Arrows in Lens are equivalent to concrete lenses:

9C 2 C : C�S;A� C�� C�B � C;T�’ �� product ��9C 2 C : C�S;A�� C�S;C�� C�B � C;T�’ �� distributing C�S;A��� through existential ��C�S;A�� �9C 2 C : C�S;C�� C�B � C;T��’ �� contra-co-Yoneda: �9C : C�X ;C�� F�C�� ’ F�X � ��C�S;A�� C�B � S;T�

Profunctor Optics and the Yoneda Lemma 26

Proof obligation (2)

Functors P : Lens ! Set are Cartesian profunctors:

8A B S T : �9C : C�S;A� C�� C�B � C;T��! P�A;B�! P�S;T�’ �� distribute � ! P�A;B�! P�S;T� through existential ��8A B S T : 8C : C�S;A� C�� C�B � C;T�! P�A;B�! P�S;T�’ �� currying; distribute 8T : � ��8A B S C : C�S;A� C�! 8T : C�B � C;T�! P�A;B�! P�S;T�’ �� Yoneda: �8T : C�X ;T�! F�T�� ’ F�X � ��8A B S C : C�S;A� C�! P�A;B�! P�S;B � C�’ �� contra-Yoneda: �8S : C�S;X �! F�S�� ’ F�X � ��8A B C : P�A;B�! P�A� C;B � C�

ie we get the first method from the functorial action.

Profunctor Optics and the Yoneda Lemma 27

6. Conclusions

• profunctor optics are practical and powerful, but mysterious

• previous proofs of equivalence (ours and Milewski’s) convoluted

• Yoneda simplifies everything considerably

• some of these ideas due to Ed Kmett, Russell O’Connor,Matthew Pickering, Bartosz Milewski

• paper to appear at ICFP 2018

• GB funded by UK EPSRC

top related