profunctor optics and the yoneda lemma ... profunctor optics and the yoneda lemma 4 the yoneda...
Post on 18-Apr-2020
0 views
Embed Size (px)
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 Theoretical Foundations of Information Science at University of Tokyo
• member of IFIP WG2.1, contributor to discussions about Algol 68, major role in 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;SetCA;�; F ’ FA, naturally in A 2 C and F 2 C;Set.
From left to right, take nt � : CA;� :! F to �AidA 2 FA. From right to left, take element x 2 FA to nt � such that �Bf Ff x. As a special case, the Yoneda Embedding:
The functor Y : Cop ! C; Set is full and faithful, and injective on objects.
C;SetCA;�;CB;� ’ CB;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’exécution du poème qui est le poème (Valéry)
• in music, die Idee der Interpretation gehört zur Musik selber und ist ihr nicht akzidentiell (Adorno)
• in sculpture, need to see a work from all angles in 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 xg fromYo :: 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:
FA ’ 8X : A! X ! FX
Now consider one half of this iso:
8A : FA! 8X : A! X ! FX ’ 8A : 8X : FA! A! X ! FX ’ 8A : 8X : FA� A! X ! FX ’ 8X : 8A : FA� A! X ! FX ’ 8X : 9A : FA� A! X ! FX
and indeed, for functor F and object X :
9A : FA� A! X ’ FX
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 aa 8c : a 6 c) b 6 c
is the Yoneda Embedding in category Pre6:
Pre6;SetPre6a;�;Pre6b;� ’ Pre6b;�a Pre6b;a
• homset PreA;6b;a is a ‘thin set’: singleton or empty
• homfunctor PreA;6a;� takes c 2 A to singleton set when a 6 c, empty otherwise
• nt � : PreA;6a;� :! PreA;6b;� is function family �c : PreA;6a; c! PreA;6b; c
• so �c is a witness that if PreA;6a; c 6� ; then PreA;6b; c 6� ;
Profunctor Optics and the Yoneda Lemma 9
The Yoneda Lemma, familiarly (2)
• any functor F preserves isos:
Ff � Fg id a Ff � g Fid( f � g id
• full and faithful functor also reflects isos
• Yoneda functor C�; is full and faithful; so
CB;� ’ CA;�a A ’ Ba C�;A ’ C�;B
in particular for C Pre6, the rule of indirect equality:
b aa 8c : a 6 ca 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 symmetric group acting on G
and similarly
every monoid is isomorphic to a monoid of endomorphisms
M ;�; e ’ fm� 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; SetCA;�;CB;� ’ CB;A
(left to right: apply to identity; right to left: functorial action).
Specialize to
M;SetM�;�;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
S view
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
S match
build
Profunctor Optics and the Yoneda Lemma 18
Adapters
Common specialization, for adapting 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
S from
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 lifts component transformer P A B to composite transformer P S T , uniformly for 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