《LISP基础》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:南石译
  • 出 版 社:儒林图书有限公司
  • 出版年份:1987
  • ISBN:
  • 页数:405 页
图书介绍:

第1章 基本概念 1

1.1 引言 1

1.2 LISP解译程式 1

1.3 求值 3

1.3.1 对更复杂的s-运算式进行求值 3

1.4 函数的引数 6

1.5 基元和系结 7

1.6 离开LISP 11

1.7 摘要 12

习题 13

第2章 符号计算 15

2.1 引言 15

2.2 串列的更深入探讨 15

2.3 把事物当成文字看待 17

2.4 car和cdr 21

2.5 cadr等 25

2.6 空串列 27

2.7 cons 28

2.8 串列建构函数 31

2.9 摘要 32

习题 33

第3章 定义自己的函数 35

3.1 引言 35

3.2 使用者定义的函数 35

3.3 自由变数 41

3.4 超级括弧 44

3.5 将函数储存於档案内 44

3.5.1 自动初始化 45

习题 46

3.6 摘要 46

第4章 述句、条件式与逻辑运算子 49

4.1 引言 49

4.2 LISP的述句 49

4.3 条件式 54

4.3.1 更复杂的cond 55

4.3.2 cond的一般形式 58

4.4 逻辑运算子 61

4.4.1 使用and和or控制程式的流程 62

4.5 摘要 63

习题 64

第5章 递归计算 65

5.1 引言——递归计算与反覆计算之比较 65

5.2 递归的基本概念 66

5.3 递归计算与参数系结 68

5.4 递归计算常犯的错误 69

5.5 更复杂的递归计算 70

5.6 摘要 77

习题 77

6.2 prog 79

第6章 LISP中的反覆计算 79

6.1 引言 79

6.2.1 一般的prog结构 81

6.3 反覆计算与递归计算之比较 83

6.4 其它的反覆形式 84

6.4.1 更结构化的反覆计算 85

6.5 摘要 86

习题 87

7.2 基本概论 89

7.1 引言 89

第7章 性质串列 89

7.3 实例 91

7.4 性质串列的重要性 93

7.5 性质串列以及基元的唯一性 93

7.6 分离式性质串列 94

7.7 摘要 95

习题 96

8.1 引言 99

8.2 函数作为引数使用 99

第8章 以函数作为引数的函数:eval、apply和对映函数 99

8.3 apply 101

8.4 eval 105

8.4.1 eval的背景问题 107

8.5 对映函数 108

8.5.1 各式各样的对映函数 110

8.5.2 apply-append技巧 112

8.6 摘要 113

习题 114

9.2 不具名称的函数 119

第9章 lambda 119

9.1 引言 119

9.3 def、putd和LISP的内部构造 124

9.4 一些参考范例 125

9.5 function函数 127

9.6 lambda用於系结变数之法 128

9.7 lambda的重要性 129

9.8 摘要 130

习题 131

10.2 read和print 133

第10章 资料的读取和写出 133

10.1 引言 133

10.3 使用特异的名称读取和列印基元 137

10.4 字串 141

10.5 I/O的重定方向 142

10.6 美观列印 144

10.7 其它的输入/输出 145

10.8 LISP中的LISP 145

10.8.1 evalquote顶层 147

10.8.2 read-eval-print回圈 148

10.9 摘要 149

习题 149

第11章 侦错 151

11.1 LISP中的侦错问题 151

11.2 中断的read-eval-print回圈 152

11.3 检查堆叠的内容 153

11.4 侦错程式 155

11.5 追踪及中断 162

11.6 摘要 165

习题 166

第12章 其它类型的函数 169

12.1 引言 169

12.2 expr与fexpr 170

12.2.1 nlambda 172

12.2.2 fexpr的背景效应 173

12.3 函数的规律 175

12.4 lexpr 175

12.4.1 定义lexpr的更简便方法 177

12.4.2 lexpr形式 178

12.4.3 其它的lexpr函数:LISTIFY和SETARG 179

12.5 闭锁 179

12.5.1 封闭一组函数 183

12.6 已编译以及外来的函数 184

12.7 扩充的lambda形式 186

12.8 摘要 186

习题 187

13.2 以巨集设计可读性更高的程式码 191

13.1 引言 191

第13章 巨集 191

13.3 巨集的定义法 193

13.4 巨集的展开 195

13.5 巨集范例 196

13.6 设计巨集的技巧 198

13.6.1 defmacro 199

13.7 let巨集 201

13.8 setf 202

13.9 优雅的使用巨集 203

13.10 其它 204

13.11 巨集的代换 205

13.12 摘要 206

习题 207

第14章 读取巨集 209

14.1 引言 209

14.2 在read时执行函数 209

14.3 读取巨集的定义法 211

14.4 接合巨集 212

14.5 反引号巨集 214

14.5.1 在巨集定义内使用反引号 217

14.6 摘要 218

习题 219

第15章 点对与其它内部结构 221

15.1 引言 221

15.2 串列的内部表示法 221

15.3 点对记号法 223

15.4 指向同一个物件的多重指标 225

15.4.1 eq 227

15.5 rplaca和rplacd的危险性 228

15.6 摘要 233

习题 234

第16章 错误处理以及非标准的控制流程 239

16.1 以程式处理错误的状况 239

16.2 errset 240

16.3 用err模拟错误 241

16.4 catch与throw 241

16.4.1 更具弹性的catch与throw 243

16.5 errset、err与catch、throw的比较 244

16.7 摘要 245

16.6 自动载入 245

习题 246

第17章 LISP符号表 247

17.1 再谈read 247

17.2 登录基元的名称 248

17.3 基元的表示法 249

17.4 oblist 249

17.5 处理oblist的函数 251

17.5.1 制造新基元 251

17.5.2 自动产生名称 252

17.5.3 从物件串列中移去基元 255

17.6 应用——模组内的区域变数 256

17.7 摘要 258

习题 259

第18章 其它的资料型态 261

18.1 引言 261

18.2 FRANZ所能提供的资料型态 262

18.3 字串 264

18.4 阵列 266

18.4.1 各式各样的阵列存取架构 267

18.5 小型向量 268

18.6 向量与直接向量 269

18.6.1 以向量做为使用者定义的资料型态 270

18.6.2 直接向量 272

18.7 value 272

18.8 二进位 274

18.9 摘要 275

习题 276

19.2.1 LISP的繁衍 277

19.2 作业系统的函数 277

第19章 系统函数 277

19.1 引言 277

19.2.2 建立一个shell子处理过程 279

19.2.3 执行UNIX命令 279

19.2.4 覆盖现行的LISP处理过程 282

19.2.5 终止现行的LISP处理过程 283

19.2.6 储存现行的LISP处理过程 283

19.2.7 改变现行目录 283

19.2.9 捕捉讯号 284

19.2.8 UNIX环境的相关资讯之取得 284

19.3 LISP内部的系统函数 285

19.3.1 判断基元是否已系结某个值 286

19.3.2 明显地呼叫LISP顶层 286

19.3.3 废物收集 286

19.3.4 计时 286

19.3.5 取得与LISP相关的线上资讯 286

19.3.6 内部的选择项 287

19.4 摘要 287

20.1 LISP编译简介 289

第20章 编译 289

20.2 LISP编译程式的用法 290

20.2.1 liszt 292

20.3 编译程式中的宣告 292

20.3.1 特殊的变数 293

20.3.2 其它的宣告 295

20.3.3 区域性的宣告 296

20.4 编译程式的其它特殊形式 297

20.4.1 eval-when 297

20.4.2 引入其它档案 298

20.4.3 特殊的progn 298

20.4.4 函数定义 298

20.4.5 其它的形式 299

20.5 编译程式特有的程式设计顾虑 299

20.5.1 lexpr的问题 299

20.5.2 文字的问题 299

20.5.5 巨集的自动载入 300

20.6 转移表 300

20.5.3 编译算术函数 300

20.5.4 只供编译程式使用的巨集 300

20.7 编译程式所提供的选择项 301

20.8 初始化 302

20.9 摘要 302

习题 303

21.1 引言 305

21.2 样式配对 305

第21章 LISP的应用:样式配对 305

21.3 有关近似性的说明 306

21.4 样式配对变数的系结 308

21.5 统一性 311

21.6 配对程式 312

21.7 摘要 317

习题 318

第22章 LISP的应用:联结式资料库管理系统 319

22.1 引言 319

22.2 联结式资料库的实作 319

22.2.1 某些实作上的考虑事项 320

22.2.2 管理程式 321

22.3 建立索引 326

22.4 推理式撷取程式 330

22.4.1 向後链结 330

22.4.2 推理式撷取程式的实作 331

22.5 摘要 333

习题 334

附录A Franz LISP函数摘要 337

A.1.1.1 判断资料型态的函数 339

A.1.1 一般的资料结构述句 339

A.1 存取及处理资料结构的函数 339

A.1.1.2 资料结构的比较函数 341

A.1.2 串列 342

A.1.2.1 串列建构函数 342

A.1.2.2 串列述句 342

A.1.2.3 串列存取函数 343

A.1.2.4 串列处理函数 344

A.1.3 符号和字串 346

A.1.3.1 符号和字串的产生函数 346

A.1.3.3 符号和字串存取函数 348

A.1.3.2 符号和字串述句 348

A.1.3.4 符号和字串处理函数 349

A.1.4 向量 350

A.1.4.1 向量建构函数 350

A.1.4.2 向量存取函数 351

A.1.4.3 向量处理函数 352

A.1.5 阵列 352

A.1.5.1 阵列建构函数 352

A.1.5.2 阵列存取函数 353

A.1.5.3 阵列处理函数 354

A.1.6 小型向量 355

A.1.6.1 小型向量建构函数 355

A.1.6.2 小型向量存取函数 355

A.1.6.3 小型向量处理函数 355

A.1.7 二进位码资料 356

A.1.8 结构 356

A.1.8.1 联结串列函数 356

A.1.8.2 性质串列函数 357

A.1.8.4 fclosure函数 358

A.1.9 其它的资料结构函数 358

A.1.8.3 tconc结构函数 358

A.2 算术函数 360

A.2.1 简单的算术函数 360

A.2.2 算术述句 362

A.2.3 三角函数 363

A.2.4 大数函数 364

A.2.5 位元的处理 364

A.2.6 其它的算术函数 365

A.3 输入/输出函数 366

A.4 系统函数 374

A.5 流程控制函数 382

A.6 控制求值的函数 386

A.7 侦错函数 389

A.8 定义函数的函数 392

A.9 其它的函数 393

A.9.1 lexpr函数 393

A.9.2 宣告函数 393

A.9.3 其它 394

附录B Franz LISP的特殊符号 395

参考书目 399

中英名词对照 401