by shigemk2

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

対話によるCommon Lisp入門 16 補助関数

[52]> (defun double (x) (doublex))
DOUBLE

という関数があって、

[53]> (defun doublex () (+ x x))
DOUBLEX

という補助関数があると、

[54]> (setf x 7)
7
[55]> (+ (double 0) x)
21

こんな風になる。
で、この関数は、

(+ (double 0) x) = (+ (double 0) x)
                 = (+ (doublex) x)
                 = (+ (+ x x) x)
                 = (+ (+ 7 x) x)
                 = (+ (+ 7 7) )
                 = (+ 14 x)
                 = (+ 14 7)
                 = 21 => 21

という風に評価されていくんDA