练习2.21 2.23
2016-06-01 16:16
281 查看
#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))
相关文章推荐
- 88----oracle大对象,boolean,date的处理
- 1025. 反转链表 (25)
- 【54】Java反射机制剖析
- list接口
- 解决 .gitignore无效,不能过滤某些文件
- Linux信号说明列表
- 【54】Java反射机制剖析
- 【54】Java反射机制剖析
- caffe学习小问题(1):caffe中的Accuracy
- 系统分析员考试复习笔记-8 第八章 软件工程
- UITableView的cell表格刷新(增加,删除,修改)
- 信息系统项目管理师考试视频、录音打包下载
- Python缩进和冒号详解
- 判断设备终端是pc还是移动端
- Android 应用签名工具----酷传
- 运动跟踪之TLD(一)--TLD理论前瞻
- 高精度/大数模板
- 自定义圆形ImageView控件
- mysql tinyint
- Validate Binary Search Tree