Optics have a very nice formulation used in some Haskell (and PureScript!) libraries; the so-called “profunctor representation”. Learners, defined a certain way, look an awful lot like some kind of two-sided or symmetric optic. Let’s see if we can devise a profunctor representation for them. This post was prompted by a chat with Bartosz Milewski.