练习2.21 2.23

来源:互联网 发布:c语言define的位置 编辑:程序博客网 时间:2024/05/22 23:59
#lang racket;: 练习 2.21(define nil '())(define square  (lambda (x) (* x x)))#|(define (square-list items)  (if (null? items)      nil      (cons (square (car items))            (square-list (cdr items)))))(define (square-list items)  (map square items))|#;: 练习 2.22#|(define (square-list items)  (define (iter things answer)    (if (null? things)        answer        (iter (cdr things)              (cons (square (car things))                    answer))))  (iter items nil))(square-list '(1 2 3 4)) ;: 输发顺序相反,为什么?展开一下:(iter '(1 2 3 4) nil) =>(iter '(2 3 4) (cons 1 nil)) =>(iter '(3 4) (cons 4                   (cons 1 nil))) =>(iter '(4) (cons 9                 (cons 4                       (cons 1 nil)))) =>(iter nil (cons 16                (cons 9                      (cons 4                            (cons 1 nil))))) =>(cons 16 (cons 9 (cons 4 ( cons 1 nil)))) =>'(16 9 4 1)|##|(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 '(1 2 3 4)) ;: 输发顺序相反,为什么?展开一下:=>(iter '(2 3 4) (cons nil                     1))=>(iter '(3 4) (cons (cons nil                         1)                   4))=>(iter '(4) (cons (cons (cons nil                             1)                       4)                 9))=>(cons (cons (cons (cons nil                        1)                  4)            9)      16)=> '((((() . 1) . 4) . 9) . 16)|#;: 练习2.23;(define (for-each proc item);  (map proc item))(define (for-each proc items)  (if (not (null? items))      (begin        (proc (car items))        (for-each proc (cdr items)))      nil)) ;: 这个是else 部分。。。 在racket 语言中,必须要有。。(for-each display '(1 2 3 4))
0 0