Where
Defines the symbol x as an alias for a and evaluates the expression f(x) with this bound value of x. This is equivalent to f(a).
Using a bound variable in an expression.
Defines the symbol f as a function and uses it in an expression. The symbol x is a dummy variable which becomes bound locally only within the Def-expression.
There can be multiple definitions in one Where-expression. The definitions are parsed left to right: x can be used in the right-hand side defining y, both x and y can be used in the right-hand side defining z, and all three (x, y and z) can be used in the main expression.
Destructuring assignment.
Destructuring assignment. This sets a, b, c and d to the entries of the matrix M.
Special destructuring assignment. This sets n to the length of the tuple T and sets a_ to a function mapping $\{1, 2, \ldots, n\}$ to the elements of T.
Defines f as a function of two variables and evaluates it. The symbols x and y are dummy variables which become bound locally only within the Def-expression.