codecamp

译者序

On Lisp》不是一本 Lisp 的入门教材, 它更适合读过《ANSI Common Lisp》或者《Practical Common Lisp》的 Lisp 学习者。它对 Lisp 宏本身及其使用做了非常全面的说明, 同时自底向上的编程思想贯穿全书, 这也 是本书得名的原因, 即, 基于 Lisp , 扩展 Lisp 。

原作者 Paul Graham 同时也是《ANSI Common Lisp》一书的作者。

On Lisp》成书早在 1994 年 ANSI Common Lisp 标准发布以前,书中使用了许多古老的 Lisp 操作符, 其中一些代码已经无法在最新的 Common Lisp 平台上执行了。所以译文里所有的源代码都被改成了符合现行 Common Lisp 标准的形式, 凡译者修改过的地方都会以脚注的形式注明。

我要特别感谢来自 AMD/ATI 的 KovChai 同学,他独立翻译了第 5,6,22,23,25 章及附录, 并对全书进行了细致的校对。另外 KovChai 还主导了本书的 LaTeX 排版工作。感谢 YufeiChen 同学提供改进排版的补丁。他还参与了第 21 章的翻译工作。

Mathematical Systems,Inc. 的 Lisp 程序员 JianshiHuang 同学是我最初翻译本书时的合作者, 他翻译了第 24 章, 并初步校对了本书前三章。

ChunTIAN(binghe)

NetEase.com,Inc.

tchaikov@gmail.com

cyfdecyf@gmail.com

jianshi.huang@gmail.com

binghe.lisp@gmail.com

封面
前言
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }