float f(float = 0); int main() { float x = f(); float y = f(1); } float f(float a) { return a*a; } | (defun f (&optional (a 0)) (if (realp a) (* a a) nil)) (defvar x (f)) (defvar y (f 1)) |
Compare the two approaches to supporting default values, identifying the advantages/disadvantages (if any) of each approach.