77/ GO标签,循环语句
2 > (tagbody ;;;构造区块
(setf x 0)
top;;;标签
(setf x (+ x 1))
(format t "~A " x)
(if (< x 10) (go top)));;;go标签构成循环语句
1 2 3 4 5 6 7 8 9 10 ;;;结果
NIL
78/ let
以下两个表达式等同
2 > (let ((x 7)
(y 2))
(format t "Number")
(+ x y))
Number
9
2 > ((lambda (x y)
(format t "Number")
(+ x y))
7
2)
Number
9
分析:
2 > (let ((x 2);;;函数内形参局部变量x,并赋值
(y (+ x 1)));;;;局部变量y,x非函数内形参x,而是函数外变量x
(+ x y));;;求和
13;;;结果
2 > x;;;测试,函数外变量x已被赋值。
10
等同于:
2 > ((lambda (x y) (+ x y)) 2
(+ x 1))
13
新变量的值,依赖同一个表达式所设立的另一个变量,使用一个变形版本let*
2 > (let* ((x 2)
(y (+ x 1)))
(+ x y))
5