`
kidneyball
  • 浏览: 329018 次
  • 性别: Icon_minigender_1
  • 来自: 南太平洋
社区版块
存档分类
最新评论

SICP读书笔记(5) —— Sec1.1.2-Sec1.1.3

阅读更多
Sec1.1.2 命名和环境
介绍第一种特殊形式:define,也就是把名字与计算对象进行绑定。需要注意的是,在Lisp中,在同一个作用域中不能使用define对同一个名字重复绑定。在DrRacket中执行
(define s 2)
(define s 3)

会出错:
引用

module: duplicate definition for identifier in: s


也就是说,在Lisp中,define的作用非常纯粹。它所定义的变量(原文中就称为variable,但要注意与其他开发语言所说的可以多次赋值的变量不同)不负责跟踪状态的改变,而是专门为结构复杂或含义不清的计算对象提供一个使用方便,意义明确的名称。

这一节强调了“名字-值”绑定作为一种基本抽象手段的重要性。程序设计语言中一个必不可少的方面,就是它需要提供一种通过名字去使用计算对象的方式。……
define是我们所用的语言里最简单的抽象方法,它允许我们用一个简单的名字去引用一个组合运算的结果。……实际上,构造一个复杂的程序,也就是为了去一步步地创建出越来越复杂的计算性对象。……这一特性鼓励了渐进式的程序开发与测试,并且导致了一个Lisp程序往往是由大量相对简单的过程组成的。


(救命啊~~ “This feature encourages the incremental development and testing of programs and is largely responsible for the fact that a Lisp program usually consists of a large number of relatively simple procedures.”在中文版中被译成“这种特征鼓励人们采用递增的方式去开发和调试程序。在很大程度上,这一情况也出于另一个事实,那就是,一个Lisp程序通常总是由一大批相对简单的过程组成的”。忍无可忍了,testing成了“调试”,什么叫“递增方式的调试”呀?is responsible for成了“出于另一个事实”,因果关系与原文完全相反。usually成了“通常总是”,这是中学语文的修改病句例题啊。)

同时,本节简单提及了,这些绑定关系被储存在一种称为“环境”的储存空间中,并且在一个计算过程中可能涉及到多个环境。关于“环境”将会在后续章节中详述。

Sec1.1.3 组合式的求值

作者在这里点明了整个第一章的一个目标:“把与过程性思维有关的问题隔离(抽象)出来”。首先,是一般性求值过程:
1) 求值该组合式的各个子表达式。
2)将作为最左子表达式(运算符)的值的过程应用于相应的实际参数,所谓的实际参数也就是其他子表达式(运算对象)的值。


其中第一点体现了“递归”的概念(求值的定义中出现了对“求值”自身的需求)。因而反复地应用第一个步骤,总可以把我们带到求值中的某一点,在这里遇到的不是组合式而是基本表达式,例如数、内部运算符或者其他名字。这种递归式的求值过程并称为“树形积累”

并且,文中强调了内部运算符的实际意义事实上与其他的绑定名字是一样的,由环境来决定:环境所扮演的角色就是用于确定表达式中的各个符号的意义。在Lisp中,连“+”,“*”这样的基本运算符号也需要由环境来为其提供计算规则,有点像C++中的运算符重载,但计算规则不是与某个运算对象绑定,而是与表达式所在的环境绑定。

最后,文中提及了Lisp语法中的“特殊形式”,例如define等,这些特殊形式有其自身的求值规则。并且(在页脚注释中)指出这些特殊形式只不过是为那些完全可以采用统一形式描述的东西给出的另一种表面结构,通常称为“语法糖”(syntactic sugar)
1
3
分享到:
评论

相关推荐

    sicp-py-zh:[译] UCB CS61a SICP Python 描述 中文版

    docker run -tid -p <port>:80 apachecn0/sicp-py-zh # 访问 http://localhost:{port} 查看文档 PYPI pip install sicp-py-zh sicp-py-zh # 访问 http://localhost:{port} 查看文档 NPM npm install -g sicp-py-zh ...

    激光表面熔覆SiCp/Ni-Cr-B-Si-C涂层的组织演化及其相确定

    运用激光熔覆技术在AISI1045钢表面制备了30vol-% SiCp/Ni-Cr-B-Si-C涂层。SEM和TEM观察分析表明:SiCp在熔覆过程中完全溶解;涂层结合区组织为共晶结构;涂层组织由初生石墨球G,分布在γ-Ni固溶体枝晶中的M23(C,B)6...

    SiCp/Al-Fe-V-Si复合材料组织与性能的热稳定性 (2008年)

    为研究SiCP/Al-Fe-V-Si复合材料的热稳定性,对多层喷射沉积技术制备的SiC颗粒增强Al-Fe-V-Si合金经过不同温度下的热稳定性实验后进行了硬度检测,并对其显微组织进行了电镜观察。结果表明:随着基体合金材料中Fe含量的...

    Python库 | sicp-0.0.2-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:sicp-0.0.2-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    lisp--:lisp-- 一个可以跑sicp解释器的lisp--

    5. **数据结构**:SICP中涵盖了多种数据结构,如列表、树和图。lisp--需要提供这些数据结构的操作和构造。 6. **元编程**:Lisp语言的一个关键特性是其元编程能力,允许代码操纵自身。lisp--可能包含元对象协议...

    sicp-Structure and Interpretation of Computer Programs

    ### SICP——《计算机程序的结构与解释》 #### 一、概述 《计算机程序的结构与解释》(Structure and Interpretation of Computer Programs, 简称SICP)是一本由MIT电气工程与计算机科学系教授Harold Abelson和...

    sicp-js-zh:【译】NUS CS1101s SICP JavaScript 描述

    NUS CS1101s SICP JavaScript 描述原文:协议:如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。...下载Dockerdocker pull apachecn0/sicp-js-zhdocker run -tid

    SICP-Python版本

    SICP-Python版本

    sicp-memo-ans:SICP笔记和答案

    sicp备忘录 包含 SICP 每个部分的注释和答案。 请参考那些正在学习SICP的人。 笔记 如果你想在 gauch 中使用随机函数 (use math.mt-random) (define m (make <mersenne> :seed (sys-time))) (mt-random-integer m ...

    sicp-study-group

    CoRecursive Slack SICP研究小组 章节 1-1-1 ::表达式 1-1-2 ::命名与环境 1-1-3 ::评估组合 1-1-4 ::复合程序 1-1-5 ::程序应用的替代模型 1-1-6 ::条件表达式和谓词 1-1-7 ::例子:牛顿法求平方根 1-1-8 :...

    sicp-in-python(中文版+英文版)PD

    sicp-in-python(中文版+英文版)PDF 背景. SICP 全称Structure and Interpretation of Computer Programs,翻译过来叫《计算机程序的构造和解释》使用python

    sicp in python 中文 sicp 中文

    sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download>>>https://github.com/wizardforcel/sicp-py-zh

    sicp-core

    《sicp-core》这个主题可能源自《Structure and Interpretation of Computer Programs》(简称SICP)这本经典的计算机科学教材。SICP是一本广泛赞誉的书籍,它深入介绍了计算机程序设计的概念和方法,尤其强调了如何...

    sicp_notes:SICP笔记和练习

    《SICP笔记和练习》是一份详尽的资源,主要涵盖了由MIT教授们编写的经典计算机科学教材《Structure and Interpretation of Computer Programs》(简称SICP)的学习笔记和练习解答。这份资料以HTML格式呈现,便于在线...

    PyPI 官网下载 | sicp-0.0.1b102.dev4.tar.gz

    标题中的"PyPI 官网下载 | sicp-0.0.1b102.dev4.tar.gz"指的是从Python的官方包索引(Python Package Index,简称PyPI)上下载的一个名为"sicp"的软件包的版本号为0.0.1b102.dev4的压缩文件,其格式是tar.gz。...

    sicp-eg-ex:sicp课程视频示例,自己的笔记,习题题解

    本文将围绕"Sicp-eg-ex"这个项目,结合标题和描述,探讨在学习SICP过程中遇到的例子、笔记和习题解,特别是环境检查方案9.5的相关知识点。 首先,我们关注到的是"SICP课程视频示例"。SICP课程的核心在于通过实际的...

    SICP中文第二版

    SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版

    SICP(计算机体系结构)

    ### SICP(计算机程序的结构与解释) #### 一、引言 《SICP》(Structure and Interpretation of Computer Programs),即《计算机程序的结构与解释》,是由Harold Abelson、Gerald Jay Sussman及Julie Sussman...

Global site tag (gtag.js) - Google Analytics