In the LISP-like family of programming languages, the four elementary arithmetic operators behave differently:
+ and * can take any number (including 0) of operands, and perform successive additions/multiplications of the operands, starting from 0 or 1 (the identity of the operation) in order to accomodate the case with 0 operands,
- and / behave similarly, but they must have at least an argument, and in this case they computes the inverse and reciprocal of the argument, otherwise perform successive subtractions/divions of the arguments.
So:
(+) -> 0
(+ 2) -> 2
(+ 1 2 3) -> 6
(*) -> 1
(* 3) -> 3
(* 1 2 3) -> 6
(-) -> error
(- 3) -> -3
(- 3 2 1) -> 0
(/) -> error
(/ 2) -> 1/2
(/ 8 2 2) -> 2
So, this is the question:
Is there a way of characterizing mathematically this difference among the four operators +, *, -, / ? Or better, is this different behaviour justified on mathematical basis? Or you think it is somewhat an arbitrary decision of the designers of those programming languages?