I'm trying to build intuition for Yoneda (again) this time from the perspective of strings and concatenation. The idea is that the identity function behaves like the empty string, and "free arrow composition" behaves like string concatenation. So can we understand yoneda from this model?
- First, let's think of
Hom(X, X). What are the elements here? Well, for one, we need the identity arrowidXinHom(X, X). Maybe we have other elements calleda, b, cinHom(X, X). So our picture ofHom(X, X)looks like this:

- what does it mean to have an element
ainHom(X, X)? It means that there's an arrow fromXtoXin the category. But this also means that we have a map fromHom(X, X)toHom(X, X), given by composing witha! That is, we have a map- . a :: Hom(X, X) -> Hom(X, X).

- If we have such a map of "composition with a", then we need to know where this map
-.amaps all the elements ofHom(X, X).Thinking about this, we see that we need to add new elements toHom(X, X), which are the composition of the current elements (idX,a,b,c) witha. This gives us the elementsidX.a = a, a.a = aa, b.a = ba, c.a = ca.

- Similarly, we need to know where these new elements
aa,ba,camap to, but let's hold off on that for now, for that simply demands an extrapolation of imagination. Let's imagine having another objectYand an arrowg: X -> Y. This will give us a new hom-setHom(X, Y) = Hom(X, X) . g

- In
Hom(X, Y)we will have as elements all the arrows fromXtoY. Let's say there's some arrowh: X -> Y. Then, we will find this arrowhinHom(X, Y)as the image ofidXunder-.h. So really, for any arrow, we can find what element it maps to as long as know (a)idXand (b)-.h.
Now that we understand the "internal" structure, let's imagine we're representing
this collection of objects and arrows by some other collection of objects
and arrows. So we have a functor F that takes these sets to other sets,
and takes these objects to other objects.