代入には、setf(setq)による代入と、関数呼び出しによる代入と、letによる代入がある。
下の例だと、関数を呼び出すときに、xとyに値が代入されている。
しかし、最初にsetfで代入したxの値は、関数呼び出し後も変わらない。
[1]> (setf x -1) -1 [2]> (defun square-sum (x y) (+ (expt x 2) (expt y 2))) SQUARE-SUM [3]> (square-sum 3 4) 25 [4]> x -1 [5]> y *** - SYSTEM::READ-EVAL-PRINT: variable Y has no value