A variable argument can also be made optional. If so, and if it is not evaluated, then all the arguments which are collected into its list will not be evaluated either. For example,
function f (!y...? = 17)
creates a function with one optional argument named
y. The argument y is not
evaluated, and may take any number of values, passed as a list. If no
argument is specified to the function, then y will
have the value of 17. If, instead of
17 the default is set to nil, no default will be assigned. This
syntax effectively gives a way to pass a list of arguments of any length to
a funtion.