Functions in the Wolfram Language have a definite structure of arguments, in terms of how many and in which order they can be given. Some of them have so-called operator forms, whose arguments can be also given in two pairs of brackets. With the new function Curry, named after Haskell Curry, you can now use any Wolfram Language function with arguments passed in any number of pairs of brackets and any order.
The dot product of matrices and vectors is a multilinear operation. With Curry, you can make this explicit. Take a matrix and two vectors.
Construct a linear operator on vectors that corresponds to that matrix. This will be the action of Dot with two arguments, the first one being the matrix.
The matrix also corresponds to a bilinear operation on two vectors. This will be the action of Dot with three arguments, where the matrix will be placed as the second argument of Dot.
Arguments can also be given one by one.