练习1.1
10
>> 10
(+ 5 3 4)
>> 12
(- 9 1)
>> 8
(/ 6 2)
>> 3
(+ (* 2 4) (- 4 6))
>> 6
(define a 3)
(define b (+ a 1))
(+ a b (* a b))
>> 19
(if (and (> b a) (< b (* a b)))
b
a)
>> 4
(cond ((= a 4) 6)
((= b 4) (+ 6 7 a))
(else 25))
>> 16
(+ 2 (if (> b a) b a))
>> 6
(* (cond ((> a b) a)
((< a b) b)
(else -1))
(+ a 1))
>> 16
练习1.2
(/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 5)))))
(* 3 (- 6 2) (- 2 7)))
练习1.3
总共有6种:x>y>z y>x>z z>x>y
x>z>y y>z>x z>y>x
(define (cmp x y z)
(cond ((and (> x y) (> y z)) (+ x y))
((and (> x z) (> z y)) (+ x z))
((and (> y x) (> x z)) (+ y x))
((and (> y z) (> z x)) (+ y z))
((and (> z x) (> x y)) (+ z x))
((and (> z y) (> y x)) (+ z y))))
练习1.4
(define (a-plus-abs-b a b) 等价 (define (a-plus-abs-b a b)((if (> b 0) + -) a b))
((if (> b 0) + -) a b))
#定义一个函数,函数名为a-plus-abs-a,形式参数为a、b,函数体为((if (> b 0) + -) a b)。
#函数体中,if (> b 0)为True,则返回 + ,否则返回 - ,然后进行组合式运算,(+ a b)或(- a b)。
练习1.5
(define (p) (p))
(define (test x y)
(if (= x 0)
0
y))
(test 0 (p))
(先完全展开后规约)正则序:
(test 0 (p)) #(p)规约为(p)
(test 0 (p)) #(p)再次规约为(p)
(test 0 (p)) #(p)再再次规约为(p)
.
.
.
(test 0 (p)) #一直循环下去
(先对参数求值后应用)应用序:
(test 0 (p))
>> 0