notes-SICP
Last edited May 24, 2009
More by KaiChen »
Sections:
概念

递归与迭代

递归计算过程:计算过程由一个推迟执行的运算链条刻画。
线性递归过程:保存算法轨迹的信息量的长度随着n值而线性增长。

迭代计算过程:可以以固定书目的状态变量描述的计算过程。
线性迭代过程:所需计算的步骤随着n线性增长。
Labels: scheme, sicp, concept
程序设计语言的第一级元素

程序设计语言中带有最少限制的元素称为具有第一级状态:

  • 可以用变量命名
  • 可以提供给过程作为参数
  • 可以由过程作为结果返回
  • 可以包含在数据结构中

Lisp中过程是一等公民
 
Labels: Lisp, sicp, concept
 什么是谓词?

谓词就是一个表达式的值会被解释为布尔值。
Labels: scheme, sicp, concept
数据抽象

为每一类的数据对象标示出一组操作,使得对这类数据对象的所有操作都可以基于它们的表达,而且在操作这些数据对象时也使用它们。

优点:
  1. 使程序易于维护和修改
  2. 把具体表现方式的依赖性限制到少数几个接口上
Labels: scip, concept
Scheme

cond条件表达式

(cond (<p1> <e1>)
            (<p2> <e2>)
            ......
            (<pn> <en>)
            (else <es>))

顺序式的谓词(<p>)匹配,直到匹配为止,未匹配到则无定义。
Labels: scheme, sicp
序对表示

(cons a d)

用car和cdr分别可以取出第一个参数和第二个参数。
lambda过程

lambda表达式
(lambda (<formail-parameters>) <body>)
构造匿名过程

let表达式
(let ((<var1> <exp1>)
        (<var2> <exp2>)
        ......
        (<varn> <expn>))
   <body>)
构造一个匿名过程,并在执行前初始化一些局部变量。实质是lambda的语法糖衣。
Labels: scheme, sicp
Scheme内置过程

define 定义事物
+-*/ 加减乘除
abs 求绝对值
and or not 作逻辑运算
Labels: scheme, sicp
 Guile小技巧

-s 运行源码文件
-l 导入源码(导入约束及过程)
-c 直接执行跟在后面的语句,类似MRI Ruby的-e
Labels: scheme, guile
The content on this page is provided by a Google Notebook user, and Google assumes no responsibility for this content.