摘要: ; 向量(也可以叫一维数组) 哈希表 ; 向量 整数索引 定长向量(连续内存区域)和变长向量; 函数VECTOR接受任意参数,生成定长向量(vector) #()(vector 1) #(1)(vector 1 2) #(1 2); 使用vector或者make-array来创建打算修改的向量; make-array应用很广泛,多维变长都行; 一个必要参数是数组长度,被访问前设置其值(make-a... 阅读全文
posted @ 2012-04-11 08:46 舜耕山翁 阅读(392) 评论(0) 推荐(0) 编辑
摘要: ; 内置数据类型 ; 数字(整数 分数 浮点数 复数); 字符; 字符串 是字符序列; 数组(包括多维数组); 列表; 哈希表; 输入输出流; 文件名抽象; 函数; ;数字; 读取器将文本读取为lisp对象,10 20/2 #xa 都代表10对象; 其他进制 #B0101二进制 #o71八进制 #nR 2-36 任意进制; 浮点数; 短型S 单精度F 双精度D 长型L; 字母e代表默认的单浮点数1... 阅读全文
posted @ 2012-04-11 08:45 舜耕山翁 阅读(161) 评论(0) 推荐(0) 编辑
摘要: ; 单元测试框架GBK编码 (defun test-+ () (and (= (+ 1 2) 3) (= (+ 1 2 3) 6) (= (+ -1 -3) -4))); 显示某条用例是否通过(defun test-+ () (format t "~:[失败~;通过~] ... ~a~%" (= (+ 1 2) 3) '(= (+ 1 2) 3)) (format t "~:[失败~;pass~]... 阅读全文
posted @ 2012-04-11 08:45 舜耕山翁 阅读(147) 评论(0) 推荐(0) 编辑
摘要: ; 生成以后可执行的代码。展开期和运行期 ; 很多时候是,重构的时候用到宏了; 有了事例调用和预想的展开式,宏不应该泄露实现细节(defmacro name (parameter*) "optional documentation string." body-form*); 编写宏的步骤:; 编写示例的宏调用和展开的代码,反之依然; 编写从示例的参数中生成手写展开式的代码; 确保宏抽象不产生泄露;... 阅读全文
posted @ 2012-04-11 08:44 舜耕山翁 阅读(199) 评论(0) 推荐(0) 编辑
摘要: ; 宏,句法抽象。其他得通过定义类来实现扩展 ; ----------------------------------(if condition then-form [else-form]);condition被求值如果非nil执行then-form返回其结果,否则执行else-form返回其结果;如果condition nil 并且没有else-form返回nil(if (> 2 4) "oko... 阅读全文
posted @ 2012-04-11 08:43 舜耕山翁 阅读(172) 评论(0) 推荐(0) 编辑
摘要: ;;;;词法变量lexical和动态变量dynamic ;;;;大体对应局部变量和全局变量;;;;一个变量可以保存任何类型的值,所有值都是对象的引用;;引入新变量LET,执行顺序,先求初值,然后绑定。LET体内用绑定的值,退出let体用原来的值。;;let体最后一个表达式的值作为let值返回,每次进入let体变量重新绑定。; (let (variable*); body-form*); (let ... 阅读全文
posted @ 2012-04-11 08:43 舜耕山翁 阅读(148) 评论(0) 推荐(0) 编辑
摘要: ;;;;函数 (defun name (parameter*)"Optional documentation string"body-form*);;;形参列表;;必要形参,个数必须一致;;可选形参&optional(defun foo (a b &optional c d)(list a b c d));;a b 必须输入 c d 可以不输入,默认nil;;默认值,并且可以用前面参数的值进行运算... 阅读全文
posted @ 2012-04-11 08:42 舜耕山翁 阅读(158) 评论(0) 推荐(0) 编辑