2.21
2.22
2.23
2.24
2.25
(define nil '())
(define (square x)
(* x x))
(define (square-list items)
(if (null? items)
nil
(cons (square (car items)) (square-list (cdr items)))))
(define (square-list-map items)
(map (lambda (x) (square x)) items))
(square-list (list 1 2 3 4))
(square-list-map (list 1 2 3 4))
2.22
(define nil '())
(define (square x)
(* x x))
(define (square-list-iter items)
(define (iter things answer)
(if (null? things)
answer
(iter (cdr things)
(cons (square (car things))
answer))))
(iter items nil))
(define (square-list items)
(define (iter things answer)
(if (null? things)
answer
(iter (cdr things)
(cons answer
(square (car things))))))
(iter items nil))
(square-list-iter (list 1 2 3 4))
(square-list (list 1 2 3 4))
2.23
(define nil '())
(define (my-for-each proc items)
(if (not (null? items))
((lambda() (proc (car items))
(my-for-each proc (cdr items))))))
(my-for-each (lambda (x) (newline) (display x))
(list 57 321 88))
2.24
(list 1 (list 2 (list 3 4)))
2.25
(define x1 (list 1 3 (list 5 7) 9))
(define x2 (list (list 7)))
(define x3 (list 1 (list 2 (list 3 (list 4 (list 5 (list 6 7)))))))
(car (cdr (car (cdr (cdr x1)))))
(car (car x2))
(car (cdr (car (cdr (car (cdr (car (cdr (car (cdr (car (cdr x3))))))))))))