implemented variadic functions with (fn [p0 ... pN & pX])