第一章 LISP引言 1
LISP程式设计 1
起步:函数 2
算术函数 3
LISP练习 5
组合LISP函数 5
LISP练习 6
原子和表列 6
平衡表列 8
LISP练习 9
表列操作函数 10
从表列中提取资讯:cor和cdr 10
建立表列:cons和list 11
给引数打引号 13
LISP练习 13
可变数 14
重新设定一个变数的值 16
LISP练习 17
第二章 定义LISP函数 21
为什么要定义函数? 21
定义你自己的LISP函数 23
函数名 23
函数参数 24
函数体 24
LISP练习 26
局部变数和全局变数 27
印出函数定义 28
LISP练习 29
演译法 29
附加的表列处理函数 30
LISP练习 31
第三章 述词和条件式 33
有条件的处理 33
述词 34
条件式 39
LISP练习 42
逻辑函数 43
LISP练习 45
使用逻辑函数的简单条件处理 47
LISP练习 48
第四章 程式设计的风格 51
撰写程式的风格 51
辅助函数 53
写辅助函数的准则 55
局部变数 56
LISP函数abs,mod和sgrt 57
LISP练习 57
缩写cars和cdrs 59
LISP练习 61
诊错 62
除去语法错误 63
除去功能性的错误 65
LISP练习 69
第五章 输入、输出和局部变数 73
输入、输出函数 73
印出 74
读入 75
LISP练习 76
函数中的多动作 77
LISP练习 78
局部变数和let 79
LISP练习 81
用let初始化变数 82
一个新函数:Length 83
LISP练习 84
局部和全局变数 84
有条件地退出一个函数:Prog和return 86
重新使用和修改变数 87
LISP练习 88
文字串,Princ和terpri 89
LISP练习 92
第六章 循环:数字的重复和输入控制的重复 95
重复:使程式重复动作部 95
循环的构造 96
数字的重复:持续计数 96
用作计数的函数 97
LISP练习 99
数字重复函数的一般形式 99
LISP练习 100
设计数字的重复 101
初始化控制变数 101
初始化结果变数 101
按排循环动作 102
LISP练习 102
计算最终的结果 102
LISP练习 103
计数的不同方式 103
执行的不同方式 104
LISP练习 104
输入控制的重复:在使用者控制下的重复 106
LISP练习 109
第七章 递回的介绍 113
数值递回 113
了解递回函数是如何工作的 114
如何写递回函数 117
LISP练习 118
数值递回中的多终止和多终止和多递回情况 120
LISP函数oddp,evenp和round 122
LISP练习 122
表列递回 124
了解cdr是如何递回工作的 125
如何写cdr递回函数 126
LISP练习 127
表列递回中的多终止和多递回情况 128
LISP练习 129
第八章 表列重覆 133
遍及表列的重复 133
设计表列重复 134
控制变数 134
初始化结果变数 134
退出测试 136
更新变数 136
LISP练习 137
用表列重复搜寻一个表列 138
自我终止搜寻 138
无尽搜寻 139
LISP练习 140
用表列重复把表列分类 142
选择分类 143
插入分类 145
LISP练习 146
另一个LISP函数:remove 146
LISP练习 147
第九章 高级递回 149
高级的表列递回 149
LISP练习 150
一种高级的递回技术 150
LISP练习 150
使用递回 151
car-cdr递回 152
LISP练习 155
规范的结构递回 156
LISP练习 159
二分法搜寻 160
二?树 160
LISP练习 163
关联表列 163
LISP练习 164
第十章 高级的重覆结构:do和mapcar 167
一个更为简便的重复结构:do 167
用do进行数字的重复 172
使用独立更新的数字重复 172
用非独立更新的数字重复 172
LISP练习 173
在do中的有条件的更新 174
LISP练习 175
在do的循环体中的动作 176
LISP练习 177
映射函数之一:mapcar 178
LISP练习 180
在多个表列上的映射 180
LISP练习 180
在多个表列上的映射 180
LISP练习 181
lambda(λ)练习 181
LISP练习 184
第十一章 更覆杂的资料结构:性质表列与行列 185
性质表列:使性质值与一个原子相关 185
赋性质给一个原子 186
存取性质的值 187
修改性质的值 188
一个资料库中的性质 189
LISP练习 190
产生新的原子 191
LISP练习 193
行列:存放易于存取的资料 194
存取一个行列的单元 195
把资料送入行列 195
写处理行列的函数 197
LISP练习 198
多维行列 199
LISP练习 200
Setg:一个普通的结构修改器 200
第十二章 表列结构与有损函数 203
con单元 203
用cons单元编排表列 204
con单元与简单的表列函数 206
LISP练习 209
引用表列:变数与文字表列 209
恒等与等价:equal与eql 210
LISP练习 212
无损函数 213
LISP练习 215
有损函数:nonc,rplaca,与rplacd 215
何时使用有损函数 218
LISP练习 219
第十三章 求值与巨组合 221
LISP求值过程 221
强迫求值:函数eval 222
LISP练习 223
把一个函数应用到引数上去 225
LISP练习 226
LISP练习 228
LISP练习 230
把反引号用于表列构造 231
LISP练习 232
巨组合 233
LISP练习 235
产生巨组合 236
LISP练习 237
第十四章 搜寻技术 239
搜寻 239
树和网路 240
产生网路结构 241
把节点加进资料结构 243
LISP练习 244
搜寻网路 244
扩展函数:存取一棵树中的节点 245
LISP函数 246
系统地搜寻 247
LISP练习 250
穷尽搜寻 251
LISP练习 251
搜寻中的重覆和循环 252
LISP练习 253
可行路径 254
LISP练习 257
有指引的搜寻 257
LISP练习 258
第十五章 模式匹配 263
资料和模式 263
一个简单的模式匹配函数 264
LISP练习 267
多层次的子句 269
LISP练习 270
多子句模式和重覆的变数 271
LISP练习 274
模式匹配赋值 275
LISP练习 278
产生式系统 279
规则直译程式:应用产生式 282
实现规则直译程式 285
LISP练习 287
第十六章 实现一个覆杂系统:一个有效的产生式系统直译程式 291
一个更有效的产生式系统 291
编写产生式 293
建立测试匹配的程式 297
LISP练习 300
建立执行动作的程式 301
LISP练习 302
引入子句:规则直译程式 302
LISP练习 310
第十七章 应用实例 313
附录:作业及解答 349