乐正

Actions speak louder than words.

Sicp-ex1-41

问题

请定义一个过程double,它以一个有一个参数的过程为参数,double返回一个过程。这 一过程将原来那个参数过程应用两次。例如,若inc是个给参数加1的过程,(double inc) 将给参数加2.下面表达式返回什么值:

1
(((double (double double)) inc) 5)

解答

1
2
3
4
5
6
7
8
(define (double f)
  (lambda (x)
    (f (f x))))

(define (inc x) (+ x 1))

(((double (double double)) inc) 5)
;Value: 21

draft

« sicp-ex1-40 sicp-ex1-42 »

Comments