read

print 可以打印 Lisp对象,以一种 Lisp读取器 可以读取的形式。

read 可以从流中读入数据,它使用与 REPL 相同的 读取器,可以读取我们在 REPL 提示符下输入的任何表达式。

print

print 函数,它会将 Lisp对象 打印成一种可以被 Lisp读取器 读回来的形式。

format

  1. (let ((x1 '(:书名 "难忘的书与插图" :作者 "汪家明" :价格 38 :是否有电子版 T)))
  2. (format t "~{~a: ~20t~a~%~}~%" x1))
  1. > (format nil "~A, ~A!" "Hello" "world")
  2. "Hello, world!"
  3. > (format t "~A, ~A!" "Hello" "world")
  4. NIL
格式指令 说明
~{ format 的循环语法,表示下一个对应的实参是一个列表的开始,然后 format 会在该列表上进行循环操作,处理位于 ~{ 和 ~} 之间的指令,每轮循环处理多少个实参取决于 ~{ 和 ~} 之间有多少个对应实参的指令,执行多少轮循环取决于 “单挑书籍记录” 中的元素的个数(确切说:循环轮数 = 元素个数 除以 每轮循环处理实参个数),所以可以通过使用 ~{ 和 ~} 来实现循环,
~} 同上,和 ~{ 配合使用
~a 美化指令,该指令对应一个实参,会把这个实参的显示形式输出为更适合阅读的形式
~t 表示制表指令,不对应实参,只移动光标,~20t 告诉 format 把光标向后移动 20 列
~% 表示换行,不对应实参

另外要注意 格式指令字符串中所有的非格式指令均以原样输出,比如 ~a 后面的冒号 : 和空格就直接原样输出

文件读写

  1. (defun save_book(path)
  2. (with-open-file (fh path
  3. :direction :output
  4. :if-exists :supersede)
  5. (with-standard-io-syntax
  6. (print *book_store* fh))))
文档更新时间: 2019-06-14 15:07