【发布时间】:2009-10-26 06:22:04
【问题描述】:
我正在阅读 Peter Siebel 的书 Practical Common Lisp 的 Simple Database 部分,想法是维护一个包含大约 50,000 条记录的小型数据库。我认为在 Emacs 中执行此操作可能是一个有趣且有用的练习。除了少数notable differences 之外,Emacs Lisp 在某种程度上与 CL 兼容。上述示例中使用的 format 函数是一个主要区别。
这里的代码包含在 CL 中构建、保存和加载数据库所需的一切。这可以修改为在 Emacs 中正常工作吗?我省略了 select 和 where 函数,但我想包括它们。也许有更好的 Emacs 构建和维护数据库的方法?就个人而言,我将其用作学习 CL 和解决现有问题的练习。
;;简单的 Common Lisp 数据库 ;; http://www.gigamonkeys.com/book/practical-a-simple-database.html ;; (defvar *db* 无) (defun make-cd(标题艺术家评级被撕毁) (列表:标题标题:艺术家艺术家:评级等级:撕开撕开)) (defun add-record (cd) (push cd *db*)) (defun转储-db() (dolist (cd *db*) (格式 t"~{~a:~10t~a~%~}~%" cd))) (defun save-db (文件名) (with-open-file (out 文件名 :方向:输出 :if-exists :supersede) (使用标准 io 语法 (打印 *db* 输出)))) (defun load-db (文件名) (with-open-file(在文件名中) (使用标准 io 语法 (setf *db* (读入))))) ; === ; ;添加一些记录 ; (add-record (make-cd "Roses" "Kathy Mattea" 7 t)) (add-record (make-cd "Fly" "Dixie Chicks" 8 t)) (add-record (make-cd "Home" "Dixie Chicks" 9 t)) ; (转储数据库) ; (保存数据库“cd.db”) ; (加载数据库“cd.db”)【问题讨论】: