this is a function that takes a mininum of 2 arguments. when called, the extra arguments are combined into a list and bound to c
for full variadic functions, you can just leave off the parens:
(def sqnl args
(map [* _ _] args))
a really nifty thing is that the arguments are automatically destructured (dunno if that's the term.) for example, say you are using lists of two elements to represent points on a coordinate plane:
(= p1 (list 30 50)
p2 (list 20 80))
and say you want to make a function that multiplies the points by a scalar. you can do it like this:
(def scale (point s)
(list (* s (car point))
(* s (cadr point))))
so you're explicitly accessing the first (car) and second (cadr) parts of the list. but you can have the work done for you like so: