How to Design Programs, Second Edition】的更多相关文章

How to Design Programs, Second Edition How to Design Programs, Second Edition…
我们写代码时要学会适应辅助函数.作者提出了一个问题,如何对一个表排序.排序函数读取一个表,产生另一个表.排序函数的合约和用途如下: (sort empty) ;; expected value: empty (sort (cons 1297.04 (cons 20000.00 (cons -505.25 empty)))) ;; expected value: (cons 20000.00 (cons 1297.04 (cons -505.25 empty))) 完整程序:(实际上就是插入排序)…
how to design Programs 学习笔记 */--> how to design Programs 学习笔记 目录 1. 前言 1.1. 系统化程序设计 1.2. 输入和输出 2. Fixed-Size Data 2.1. 函数和程序 1 前言 典型的编程课程采用"修改直到满意为止"的方法. 掌握编程方法,而不是修补直到它工作. 好的编程方法是按照系统化方法,计划,理解从最初开始的每一个阶段.每一步. 系统化程序设计 任何人都可以设计程序 任何人都可以体验创造性设计…
由结构体组成的表与结构体中的表. 在用追溯形式建立家家谱树时,我们通常从某个后代除法,依次处理它的父母,组父母等.而构建树时,我们会不断添加谁是谁的孩子,而不是写出谁是谁的父母,从而建立一颗后代家谱树. 绘制后代数与绘制祖先树一样,只是将所有箭头的方向都反了过来: (define-struct parent (children name date eyes))children数量不固定,怎么办?自然的选择是另children代表由parent结构体组成的表,这个表代表孩子,parent是结构体:…
可以慢慢理解.. 对照JAVA class Singleton(object): def __new__(cls): if not hasattr(cls, 'instance'): cls.instance = super(Singleton, cls).__new__(cls) return cls.instance s = Singleton() print("Object created", s, id(s)) s1 = Singleton() print("Obje…
这是一个家族谱: ;child(define-struct child (father mother name date eyes)) #lang racket ;child (define-struct child (father mother name date eyes)) ;; Oldest Generation: (define Carl (make-child empty empty 'Carl 1926 'green)) (define Bettina (make-child em…
使用cons构造一个包含多个元素的表十分麻烦,因此scheme提供了list操作,该操作接受任意量的值作为输入以创建一个表,下面是扩展的语法: <prm>=list 扩展的scheme值的集合是: <val>=(list  <val> ....      <val>) 理解list表达式的一种简单方法是将它当做若干cons的简写,具体来说,就是(list exp1 expe2       .......... exp-n) 看成如下: (cons exp1…
这章让我明白了原来自然数的定义本来就是个递归的过程. 我们通常用枚举的方式引出自然数的定义:0,1,2,3,等等(etc).最后的等等是什么意思?唯一能把等等从描述自然数的枚举方法中去除的方法是自引用,第一种尝试是: 0 is a natural number. If n is a natural number, then one more than n is one, too. 虽然这种描述并不是十分严格,但对于scheme格式的数据定义来说,他是一个很好的开始: natural-number…
返回表的函数: 下面是一个求工资的函数: ;; wage : number  ->  number ;; to compute the total wage (at $12 per hour) ;; of someone who worked for h hours (define (wage h) (* 12 h)) 显示,只能求单个人的工资,我们相求多个人的工资,于是想传入一个list过去: ;; hours->wages : list-of-numbers  ->  list-of…
假定一个玩具商店要把货物库存清单存放在计算机之中,这样,店里的员工就可以快速判断商店里是否还有某种玩具存货.简言之,商店需要一个能够检查库存是否含有玩具'doll 的函数contains-doll?,翻译成Scheme 的术语就是,判断符号表中是否存在值为'doll 的元素.有了函数 contains-doll?输入数据的定义,接着就要给出函数合约.头部和用途说明:;; contains-doll? : list-of-symbols -> boolean;; 判断符号'doll 是否存在于a-…