摘要: ; 1LOOP;组成部分 ;一个loop中可以做的事情:;以数值或多种数据结构为步长做循环;;循环过程中收集,计数,求和,求最大,求最小;;;执行任意LISP表达式;;;;决定何时终止循环;;;;;条件执行上述内容;提供下列事务语法:;创建用于循环内部的局部变量;指定任意LISP表达式在循环开始前和结束后执行; 2迭代控制; 大多数以for或者它的同义词as开始,紧接着一个变量; 可以多个for子... 阅读全文
posted @ 2012-04-20 16:25 舜耕山翁 阅读(576) 评论(0) 推荐(0) 编辑
摘要: ; 读写文件 (open "/some/file/name.txt"); 默认情况下open返回基于字符的流READ-CHAR读取单个字符READ-LINE读取一行自动去掉行结束符READ读取一个S表达式,返回lisp对象CLOSE关闭流READ-BYTE读取二进制的一个字节(0-255的整数)open参数:element-type '(unsigned-byte 8)READ-SEQUENCE传... 阅读全文
posted @ 2012-04-19 09:48 舜耕山翁 阅读(240) 评论(0) 推荐(0) 编辑
摘要: ; 超越列表,点对的其他用法(树 集合 查询表) ; 点对单元的链接,可以看成列表可以看成树; 从第一个点对沿着cdr一直往下走,直到遇到nil,列表元素就是点对的car所引用的对象(defparameter *list* '((1 2) (3 4) (5 6))); ○○→○○→○○; ↓ ↓ ↓; ○○ ○○ ○○; 点对单元如上所示,列表结构只包含最上面三个单元; 数结构包含5,6,7三行;... 阅读全文
posted @ 2012-04-13 16:02 舜耕山翁 阅读(152) 评论(0) 推荐(0) 编辑
摘要: ; 没有列表 ; 列表是构建在点对单元之上的描述,使用cons创建点对单元(cons 1 2) ;(1 . 2); 点对单元的两个值分别叫car和cdr,同时又是访问这两这个值的函数名,; 并且支持setf赋值(car (cons 1 2));1(cdr (cons 1 2));2(defparameter *cons* (cons 1 2))(setf (car *cons*) 10);10*c... 阅读全文
posted @ 2012-04-13 11:05 舜耕山翁 阅读(164) 评论(0) 推荐(0) 编辑
摘要: ; 向量(也可以叫一维数组) 哈希表 ; 向量 整数索引 定长向量(连续内存区域)和变长向量; 函数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) 编辑