SICP学习笔记 - 第一章 (1.1)
2012-10-30 11:09
211 查看
语言的三个机制:
基本表达式 (primitive expression)
组合 (combination)
抽象 (abstraction)
组合式:由括号括起的一些表达式,形成的表。表中最左边的元素称为运算符(operator),其他元素称为运算对象(operand)。
过程定义的一般形式:(define (<name> <formal parameters>) <body>)
应用序(application order):求值参数而后应用
正则序(normal order):完全展开而后归约
特殊形式(special form):
部分习题:
exercise 1.3
exercise 1.5
在应用序求值中,解释器会先对各个子表达式求值。在对(p)求值时就会陷入无限循环。而正则序会先展开而后归约,(test 0 (p)) 会先展开成 if 的特殊形式,再根据 if 的求值规则:谓词部分先求值,根据谓词结果选择子表达式,这样正则序求值会返回0.
exercise 1.6
Lisp使用应用序求值,而new-if不是一个特殊形式,求值过程中会不断对子表达式求值形成无限循环。
exercise 1.7
没想明白改变值相对于猜测值的比率应该怎么表示,暂时用改变值和猜测值的差代替。
exercise 1.8
基本表达式 (primitive expression)
组合 (combination)
抽象 (abstraction)
组合式:由括号括起的一些表达式,形成的表。表中最左边的元素称为运算符(operator),其他元素称为运算对象(operand)。
过程定义的一般形式:(define (<name> <formal parameters>) <body>)
应用序(application order):求值参数而后应用
正则序(normal order):完全展开而后归约
特殊形式(special form):
(define (<name> <formal parameters>) <body>) (cond (<p1> <e1>) (<pn> <en>)) (if <predicate> <consequent> <alternative>) (and <e1> ... <en>) (or <e1> ... <en>) (not <e>)
部分习题:
exercise 1.3
(define (square-sum-of-two x y z) (+ (square (max x y)) (square (max z (min x y)))))
exercise 1.5
(define (p) (p)) (define (test x y) (if (= x 0) 0 y)) (test 0 (p))
在应用序求值中,解释器会先对各个子表达式求值。在对(p)求值时就会陷入无限循环。而正则序会先展开而后归约,(test 0 (p)) 会先展开成 if 的特殊形式,再根据 if 的求值规则:谓词部分先求值,根据谓词结果选择子表达式,这样正则序求值会返回0.
exercise 1.6
Lisp使用应用序求值,而new-if不是一个特殊形式,求值过程中会不断对子表达式求值形成无限循环。
exercise 1.7
没想明白改变值相对于猜测值的比率应该怎么表示,暂时用改变值和猜测值的差代替。
(define (sqrt x) (define (good-enough? guess) (< (abs (- guess (improve guess))) 0.0001)) (define (improve guess) (/ (+ guess (/ x guess)) 2)) (define (sqrt-iter guess) (if (good-enough? guess) guess (sqrt-iter (improve guess)))) (sqrt-iter 1.0))
exercise 1.8
(define (cube-root x) (define (good-enough? guess) (< (abs (- guess (improve guess))) 0.0001)) (define (improve guess) (/ (+ (/ x (square guess)) (* 2 guess)) 3)) (define (cube-root-iter guess) (if (good-enough? guess) guess (cube-root-iter (improve guess)))) (cube-root-iter 1.0))
相关文章推荐
- ASP.net(1.1)原理学习笔记--第一章 ASP.net的基本架构
- SICP第一章学习笔记
- SICP学习笔记 - 第一章 (1.3)
- SICP第一章学习笔记
- SICP学习笔记(1.1)
- SICP学习笔记 - 第一章 (1.2)
- [蛙蛙推荐]SICP第一章学习笔记-编程入门
- SICP第一章——构造过程抽象之程序设计的基本元素(1.1)笔记及习题解答
- c++学习笔记 第一章 绪论
- JavaScript学习笔记-第一章
- 王爽《汇编语言》(第二版) 学习笔记 (第一章 基础知识)
- 【学习笔记】【第一章】【Verilog HDL数字集成电路设计方法概述】
- Linux 学习笔记_12_Windows与Linux文件共享服务_1.1_--Samba(上)
- sicp 学习 1.1
- html5 +css3 第一章学习和笔记
- SICP第二章学习笔记
- HTTP 1.1学习笔记
- 鸟哥的Linux私房菜-学习笔记-第一章【Linux】
- [小猫学NA]CCNA学习指南第一章笔记
- 信息检索导论学习笔记 --第一章 布尔检索