The reference for MIT/Gnu-Scheme says, that +
takes ANY number of arguments.
I am sure, that this standard.
In general:
(define (foo . args) ....)
is used like (foo)
or (foo x)
or (foo x y)
, (foo x y z)
, .... . Inside foo
the args will be '()
, (x)
, (x y)
or (x y z)
.
See exercise 2.20 in SICP or MIT/Scheme Reference 9.2 chap 2.1
This means:
For the arithmetic procedures +
, *
, -
and /
your procedure is not necessary, because they are defined for any number of arguments, including zero and one.
This is also true for some other built-in procedures.
For your own procedures you can use the dotted-tail notation.
You can download the MIT/Scheme Reference from the GNU-Pages. I think it helps for all implementation of Scheme, because extension of the standard are
described. Most parts are easy to read.