练习 2.26

根据定义:

(define x (list 1 2 3))

(define y (list 4 5 6))

查看 (append x y)(cons x y)(list x y)) 在解释器里打印的值:

1 ]=> (append x y)

;Value 35: (1 2 3 4 5 6)

1 ]=> (cons x y)

;Value 36: ((1 2 3) 4 5 6)

1 ]=> (list x y)

;Value 37: ((1 2 3) (4 5 6))

其中, (append x y) 的盒子图形为:

 (1 2 3 4 5 6)     (2 3 4 5 6)      (3 4 5 6)     (4 5 6)      (5 6)     (6)
[*]-------------> [*]------------> [*]---------> [*]--------> [*]-----> [*]---> nil
 |                 |                |             |            |         |
 v                 v                v             v            v         v
 1                 2                3             4            5         6

(cons x y) 的盒子图形为:

 ((1 2 3) 4 5 6)     (4 5 6)      (5 6)       (6)
[*]---------------> [*]--------> [*]-------> [*]---> nil
 |                   |            |           |
 |                   v            v           v
 |                   4            5           6
 |
 | (1 2 3)     (2 3)         (3)
[*]---------> [*]---------> [*]-----> nil
 |             |             |
 v             v             v
 1             2             3

(list x y) 的盒子图形为:

 ((1 2 3) (4 5 6))      ((4 5 6))
[*]------------------> [*]------------> nil
 |                      |
 |                      |
 |                      | (4 5 6)      (5 6)      (6)
 |                     [*]----------> [*]------> [*]---> nil
 |                      |              |          |
 |                      v              v          v
 |                      4              5          6
 |
 | (1 2 3)      (2 3)        (3)
[*]----------> [*]--------> [*]----> nil
 |              |            |
 v              v            v
 1              2            3

讨论

blog comments powered by Disqus