by shigemk2

当面は技術的なことしか書かない

対話によるCommon Lisp入門 5 代入

代入には、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