关闭

练习2.21 2.23

86人阅读 评论(0) 收藏 举报
分类:
#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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7227次
    • 积分:720
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:7篇
    • 译文:27篇
    • 评论:0条