# [Python-ideas] Why operators are useful

Steven D'Aprano steve at pearwood.info
Mon Mar 18 19:58:03 EDT 2019

```On Mon, Mar 18, 2019 at 05:51:08AM -0700, Rémi Lapeyre wrote:

> Maths’ typing is explicit so you don’t need to spend brain cycles to
> determine them.

Surely that depends on how formal you are being?

Maths can vary hugely in formality, even at a professional level. It is
a terrible overgeneralisation to state that maths is always explicitly
typed, unless your definition of mathematics is defined so narrowly as
to exclude the majority of maths done in the world.

In my own personal experience, there is a lot of mathematics done using
implicit typing. I've never seen anyone explicitly declare that the i, j
or k loop variables in a sum or product is an element of ℤ, they just
use them:

∞
∑ expression
i=0

Likewise it is very common to assume that n is an integer, x and y are
Reals, and z is a Complex. Perhaps not in formal papers, but in less
formal contexts, it is very common to assume specific convections used
in the field rather than spell them out fully. For example:

https://en.wikipedia.org/wiki/Volume_of_an_n-ball

You might not give Wikipedia much credence, but I trust you won't
object to John Baez and Terry Tao as examples of actual practicing
mathematicians:

https://johncarlosbaez.wordpress.com/2019/03/15/algebraic-geometry/

https://terrytao.wordpress.com/2019/02/19/on-the-universality-of-the-incompressible-euler-equation-on-compact-manifolds-ii-non-rigidity-of-euler-flows/

Similarly, I've never seen anyone explicit declare the type of a
variable used for a change in variable. Even if we've explicitly stated
that x is a Real, we might write something like:

let u = x^2 + 3x

in order to apply the chain rule, without explicitly stating
that u is also a Real. Why would you need to?

Its not like mathematics has a compiler which can flag type errors. We
declare types only when needed. The rest of the time, we can use
convention, domain-knowledge or inference to determine types.

--
Steven
```