Had a couple of thoughts on how these string diagrams of profunctors actually work.

My initial instinct was to think of a profunctor \\(\Phi : X \nrightarrow Y\\) as a "box", with a "wire" coming in on the left and another "wire" going out on the right:

These boxes can be connected together end-to-end, which corresponds to composing profunctors:

They can also stacked vertically, which corresponds to tensoring profunctors:

(Of course we need to prove that "connecting" and "stacking" commute, i.e.

\[(\Psi\circ\Phi)\otimes(\Psi'\circ\Phi') = (\Psi\otimes\Psi')\circ(\Phi\otimes\Phi'), \]

but that's pretty straightforward once you notice that \\(\otimes\\) distributes over arbitrary joins in a quantale.)

However, I'm now thinking this "box" intuition is slightly misleading. We've seen how a profunctor \\(\Phi : X \nrightarrow Y\\) can equally well be written as a profunctor \\(Y^\text{op} \times X \nrightarrow \textbf{1}\\), or \\(\textbf{1} \nrightarrow Y \times X^\text{op}\\), or \\(Y^\text{op} \nrightarrow X^\text{op}\\). Which suggests these boxes are all equally good representations of \\(\Phi\\):

So really it doesn't matter which "side" the wires go into or out of the box. All that matters is the direction, in or out.

This suggests we ought to think of profunctors not as boxes, but rather as blobs with inputs and outputs.

Composition means connecting the output of one blob to the input of another. Tensoring means gathering together a bunch of blobs into one:

But the "horizontal v vertical" or "left to right" aspects of string diagrams – at least for profunctors – turn out to be irrelevant.

My initial instinct was to think of a profunctor \\(\Phi : X \nrightarrow Y\\) as a "box", with a "wire" coming in on the left and another "wire" going out on the right:

These boxes can be connected together end-to-end, which corresponds to composing profunctors:

They can also stacked vertically, which corresponds to tensoring profunctors:

(Of course we need to prove that "connecting" and "stacking" commute, i.e.

\[(\Psi\circ\Phi)\otimes(\Psi'\circ\Phi') = (\Psi\otimes\Psi')\circ(\Phi\otimes\Phi'), \]

but that's pretty straightforward once you notice that \\(\otimes\\) distributes over arbitrary joins in a quantale.)

However, I'm now thinking this "box" intuition is slightly misleading. We've seen how a profunctor \\(\Phi : X \nrightarrow Y\\) can equally well be written as a profunctor \\(Y^\text{op} \times X \nrightarrow \textbf{1}\\), or \\(\textbf{1} \nrightarrow Y \times X^\text{op}\\), or \\(Y^\text{op} \nrightarrow X^\text{op}\\). Which suggests these boxes are all equally good representations of \\(\Phi\\):

So really it doesn't matter which "side" the wires go into or out of the box. All that matters is the direction, in or out.

This suggests we ought to think of profunctors not as boxes, but rather as blobs with inputs and outputs.

Composition means connecting the output of one blob to the input of another. Tensoring means gathering together a bunch of blobs into one:

But the "horizontal v vertical" or "left to right" aspects of string diagrams – at least for profunctors – turn out to be irrelevant.