We can recursively define a tuple: \begin{align*} \langle x \rangle &= x\\ \langle x_1,\ldots,x_{n+1} \rangle &= \langle \langle x_1,\ldots,x_{n}\rangle, x_{n+1}\rangle \\ \end{align*} We can define functions as sets of tuples $\langle x,y \rangle$ (with a unique $y$ for each $x$). So, the Cartesian product of an indexed family $ \{X_i\}_{i\in I}$ can be defined as: $$ \prod_{i \in I} X_i = \left\{\left. f: I \to \bigcup_{i \in I} X_i\ \right|\ (\forall i)(f(i) \in X_i)\right\}$$ Another way is to define: ${\huge \times}_{i =1}^{n} X_i$: \begin{align*} {\huge \times}_{i =1}^1 X_i &\text{ stands for } X_1 \\ {\huge \times}_{i =1}^{n+1} X_i &\text{ stands for } \left({\huge \times}_{i =1}^n X_i \right)\times X_{n+1}\\ X_1 \times X_2 &\text{ stands for } \{ \langle a,b \rangle : a \in X_1 \wedge b \in X_2\}\\ %X_1 \times \ldots\times X_n &\text{ stands for } {\huge \times}_{i =1}^{n} X_i \end{align*}
For $I=\{1, \dots, n\}$ there is a one-to-one correspondence from $\prod_{i \in \{1, \dots, n\}} X_i$ to ${\huge \times}_{i =1}^{n} X_i$. For example, if $ A_1={1}, A_2={2}, A_3={3} $: \begin{align*} \prod_{i \in \{1, 2\}} X_i &= \big\{ \{ \langle 1,1 \rangle, \langle 2,2 \rangle, \langle 3,3 \rangle\} \big\}\\ {\huge \times}_{i =1}^{n} X_i &= \big\{\langle \langle 1,2 \rangle, 3 \rangle \big\} =\big\{\langle 1,2, 3 \rangle \big\} \end{align*}
If $I$ is uncountable, the equivalent operation ${\huge \times}$ can't be implemented. I am not sure about $I$ countably infinite.
Now, my curiosity concerns whether there is a proper name to label/distinguish the operation ${\huge \times}$ from $\prod$ and possibly a standard notation.