ANSI Common lisp译本
文章平均质量分 80
XGamerR
If a game,must be over.
展开
-
ANSI Common Lisp译本笔记1
第二章 welcome to lisp函数调用是一般用()包裹,第一个参数为函数名,后面的参数为实参。如:加法:(+ 1 2) → 3此种表示法为前序表示法。CLISP的求值方式:1.先对参数从左到右求值,函数符号求值则为函数体,实参符号求值则为实参值2.将实参值应用到函数体中,用于求出最终的值并返回。特殊的操作符:quote,其并不是按照上面的求值原创 2017-09-21 13:49:34 · 401 阅读 · 0 评论 -
ANSI Common Lisp译本笔记2
第三章 列表(Lists)列表是Lisp的基本数据结构之一,在最早的Lisp中,是唯一的数据结构。cons真正做到事情是将两个对象结合成一个有两部分的对象。概念上来说,cons是一对指针,第一个是car,第二个是cdr将cons看成一个箱子,一部分是car,一部分是cdr,这种方式叫做箱子表示法,即和链表图一样。一个列表中的元素又是一个列表,这种属于嵌套列表。原创 2017-09-21 14:33:01 · 419 阅读 · 0 评论 -
ANSI Common Lisp译本笔记3
特殊数据结构数组make-arry:构造一个数组,第一个参数为数组维度,若要指定多维数组,则此参数为一个列表。第二个参数为初始化值,可以使用关键字initial-element来指定全部初始值。如:(make-array 2 :initial-element nil)→(nil nil)一个一维数组含有两个nil值的元素。(make-array '(2 2) :init原创 2017-09-22 09:10:42 · 423 阅读 · 0 评论 -
ANSI Common Lisp译本笔记4
控制流区块区块的基本操作符:progn、block、tagbodyprogn:对主体中的每个表达式依次进行求值,返回最后一个表达式的值。如:(progn (format t "a") (format t "b") (+ 1 1))输出为:ab23block:像一个带有名字及紧急出口的progn。第一个参数为符号。可在block中使原创 2017-10-12 08:32:23 · 605 阅读 · 0 评论 -
ANSI Common Lisp译本笔记5
函数fboundp:判断一个函数名是否有一个给定的符号。测试代码:CL-USER> (fboundp '+)Tsymbol-function:配置一个名字给一个函数。测试代码:CL-USER> (setf (symbol-function 'add2) #'(lambda (x) (+ x 2)))#CL-USER> (add2 1)3一般地,使用字符串作为函数的第原创 2017-10-12 13:17:49 · 340 阅读 · 0 评论 -
ANSI Common Lisp译本笔记6
输入输出common lisp有两种流:字符流、二进制流字符流流是用来表示字符来源与或终点的lisp对象。输入缺省是从*standard-input*流读取,输出缺省是在*standard-output*流。最初会在相同的地方:一个表示顶层的流。一个路径名是一种可携的方式来指定一个文件。一个路径名有6个部分:host、device、directory、name、原创 2017-10-12 13:47:04 · 398 阅读 · 0 评论 -
ANSI Common Lisp译本笔记7
符号符号本身是以要一个对象所存在。一个符号可以用任何字符串作为名称,可通过调用symbol-name来获得符号的名字缺省情况下,common lisp在读入时,将符号名字所有的英文字母都转为大写,则表示缺省时不区分大小写。特殊语法用来参照符号:任何存在垂直杠(|)之间的字符序列被视为一个符号。在此种情况下读入的符号名不会转大写。宏字符和其他的字符被视为一般字符。若想用垂直杠(|原创 2017-10-12 13:50:07 · 436 阅读 · 0 评论 -
ANSI Common Lisp译本笔记8
宏求值eval:接收一个表达式,将其求值并返回。eval缺点:1.效率低,eval处理的是原始列表,要不当下编译它,或用直译器求值。这两种方法都比执行编译过来的代码慢。2.表达式在没有词法语境的情况下被求值。如:在let中调用eval,传给eval的表达式无法参照由let设置的变量。eval主要的作用是作为lisp的概念模型。函数coerce和com原创 2017-10-12 14:00:11 · 390 阅读 · 0 评论 -
ANSI Common Lisp译本笔记9
Common Lisp 对象系统(CLOS)common lisp对象系统,简称为CLOS,是用一组用来实作面向对象编程的操作集。defclass:定义一个类格式:defclass 类名 () (字段))说明:字段又叫槽(slot),传给defclass的第三个参数必须是一个槽定义的列表。make-instance:实例化一个类,即创建一个类的实例。格式:make-原创 2017-10-12 14:03:21 · 404 阅读 · 0 评论