First, we generally write \\(A \otimes B\\) for the general monoidal product in \\(f : A \otimes B \rightarrow C\\) although the Cartesian product \\(\times\\) can be a monoidal product in \\(\mathbf{Set}\\). The monoidal product isn't the same as the cartesian product though, at least not in general! So it's important to make the distinction.

> I just say the function accepts a product as the input

Note that morphisms can be more general than functions! While many specific examples of morphisms are functions or like functions (e.g., functions for sets, continuous functions for topological spaces, group homomorphisms, ring homomorphisms, etc.), we also have a category \\(\mathbf{Rel}\\) where the objects are sets and the morphisms are relations between sets. Here's an example:

\[ R: X \to Y \qquad R = \\{(x,y): x^2 + y^2 = 1 \ \text{for} \ x \in X, \ y \in Y\\}\]

We can compose it with another relation \\(S\\)

\[S : Y \to Z \qquad S = \\{(y,z): 2y + 3z = 0 \ \text{for} \ y \in Y, \ z \in Z\\}\]

by finding pairs of \\(x\\) and \\(z\\) which have a shared \\(y\\) value:

\[SR : X \to Z \qquad SR = \\{(x,z) : x^2 + y^2 = 1, \ 2y + 3z = 0 \ \text{for some} \ y \in Y\\}\]

> To translate a monoidal product to usual notation, we'd need an arrow to accept two things as input. Arrows are inherently one-dimensional objects

Morphisms only take 1 input and 1 output. The morphism \\(f : A \otimes B \to C \\) has one input, called \\(A \otimes B\\). Of course, \\(A \otimes B\\) is an object that is a combination of two other objects \\(A\\) and \\(B\\). In some sense, the string diagram hides the fact that we combine \\(A\\) and \\(B\\) before applying \\(f\\) (if we're thinking of \\(f\\) as a function). If you write \\(f: X \to C\\) then let \\(X = A \otimes B\\) it becomes a bit clearer in the notation that \\(A \otimes B\\) is just one object.

> how did I end up with \\(A \times B \\)?

Well, if \\(A \times B\\) is the cartesian product (or direct product, etc.) then yes, if the category always has finite products, then there's an object which satisfies the properties of being a product of \\(A\\) and \\(B\\). We happen to write it as \\(A \times B\\) to remind ourselves that this object is the product of two other objects, but we don't have to.

For any monoidal category, the monoidal product is a functor \\(\otimes : \mathcal{C} \times \mathcal{C} \to \mathcal{C}\\) that sends pairs of objects in \\(\mathcal{C}\\) to other objects, and pairs of morphisms to morphisms. By definition, it always gives something for any pair of objects. You can define the monoidal product using limits (like products) and colimits (like coproducts) by simply saying that the monoidal product sends pairs of objects to whatever you get when you compute the limit/colimit (if it exists).

> Is this sort of reasoning valid? Where can I read more about this? Are there higher-dimensional generalizations of string diagrams?

I'd watch [these TheCatsters videos](https://www.youtube.com/watch?v=USYRDDZ9yEc&list=PL50ABC4792BD0A086) on string diagrams if you haven't already. In these examples, natural transformations become points (2-morphisms), functors become lines (morphisms), and categories become 2D regions (objects). Arrow notation goes the other way, objects are points, morphisms are lines, and 2-morphisms are regions (although still usually drawn like arrows). So yes, there are higher dimensional generalizations of string diagrams.

> I just say the function accepts a product as the input

Note that morphisms can be more general than functions! While many specific examples of morphisms are functions or like functions (e.g., functions for sets, continuous functions for topological spaces, group homomorphisms, ring homomorphisms, etc.), we also have a category \\(\mathbf{Rel}\\) where the objects are sets and the morphisms are relations between sets. Here's an example:

\[ R: X \to Y \qquad R = \\{(x,y): x^2 + y^2 = 1 \ \text{for} \ x \in X, \ y \in Y\\}\]

We can compose it with another relation \\(S\\)

\[S : Y \to Z \qquad S = \\{(y,z): 2y + 3z = 0 \ \text{for} \ y \in Y, \ z \in Z\\}\]

by finding pairs of \\(x\\) and \\(z\\) which have a shared \\(y\\) value:

\[SR : X \to Z \qquad SR = \\{(x,z) : x^2 + y^2 = 1, \ 2y + 3z = 0 \ \text{for some} \ y \in Y\\}\]

> To translate a monoidal product to usual notation, we'd need an arrow to accept two things as input. Arrows are inherently one-dimensional objects

Morphisms only take 1 input and 1 output. The morphism \\(f : A \otimes B \to C \\) has one input, called \\(A \otimes B\\). Of course, \\(A \otimes B\\) is an object that is a combination of two other objects \\(A\\) and \\(B\\). In some sense, the string diagram hides the fact that we combine \\(A\\) and \\(B\\) before applying \\(f\\) (if we're thinking of \\(f\\) as a function). If you write \\(f: X \to C\\) then let \\(X = A \otimes B\\) it becomes a bit clearer in the notation that \\(A \otimes B\\) is just one object.

> how did I end up with \\(A \times B \\)?

Well, if \\(A \times B\\) is the cartesian product (or direct product, etc.) then yes, if the category always has finite products, then there's an object which satisfies the properties of being a product of \\(A\\) and \\(B\\). We happen to write it as \\(A \times B\\) to remind ourselves that this object is the product of two other objects, but we don't have to.

For any monoidal category, the monoidal product is a functor \\(\otimes : \mathcal{C} \times \mathcal{C} \to \mathcal{C}\\) that sends pairs of objects in \\(\mathcal{C}\\) to other objects, and pairs of morphisms to morphisms. By definition, it always gives something for any pair of objects. You can define the monoidal product using limits (like products) and colimits (like coproducts) by simply saying that the monoidal product sends pairs of objects to whatever you get when you compute the limit/colimit (if it exists).

> Is this sort of reasoning valid? Where can I read more about this? Are there higher-dimensional generalizations of string diagrams?

I'd watch [these TheCatsters videos](https://www.youtube.com/watch?v=USYRDDZ9yEc&list=PL50ABC4792BD0A086) on string diagrams if you haven't already. In these examples, natural transformations become points (2-morphisms), functors become lines (morphisms), and categories become 2D regions (objects). Arrow notation goes the other way, objects are points, morphisms are lines, and 2-morphisms are regions (although still usually drawn like arrows). So yes, there are higher dimensional generalizations of string diagrams.