What You Needa Know About Yoneda: Profunctor Optics and the Yoneda Lemma (Functional Pearl)
What You Needa Know about Yoneda Profunctor Optics and the Yoneda Lemma (Functional Pearl) GUILLAUME BOISSEAU, Department of Computer Science, University of Oxford, UK JEREMY GIBBONS, Department of Computer Science, University of Oxford, UK Profunctor optics are a neat and composable representation of bidirectional data accessors, including lenses, and their dual, prisms. The profunctor representation exploits higher-order functions and higher-kinded type constructor classes, but the relationship between this and the familiar representation in terms of ‘getter’ and ‘setter’ functions is not at all obvious. We derive the profunctor representation from the concrete representation, making the relationship clear. It turns out to be a fairly direct application of the Yoneda Lemma, arguably the most important result in category theory. We hope this derivation aids understanding of the profunctor representation. Conversely, it might also serve to provide some insight into the Yoneda Lemma. CCS Concepts: • Theory of computation → Program constructs; Categorical semantics; Type theory; • Software and its engineering → Abstract data types; Data types and structures; Patterns; Polymor- phism; Semantics; Additional Key Words and Phrases: Lens, prism, optic, profunctors, composable references, Yoneda Lemma. ACM Reference Format: Guillaume Boisseau and Jeremy Gibbons. 2018. What You Needa Know about Yoneda: Profunctor Optics and the Yoneda Lemma (Functional Pearl). Proc. ACM Program. Lang. 2, ICFP, Article 84 (September 2018), 27 pages. 84 https://doi.org/10.1145/3236779 1 INTRODUCTION There is a saying in English that you can tell a lot about a person by the company they keep. Similarly, the Dutch say zeg me wie uw vrienden zijn, dan zeg ik wie u bent—“tell me who your friends are, and I will tell you who you are”; and the Japanese for ‘human being’ is , constructed from the two kanji (‘nin’, meaning ‘person’) and (‘gen’, meaning ‘between’), conveying the idea that “you as a human being only exist through your relations with others” [Matsumoto 2018].
[Show full text]