Peter Siebelの本Practical Common LispのSimple Databaseのセクションを読んで、約50,000レコードの小さなデータベースを維持する考えでした。私はEmacsでこれをやっているのが面白くて便利な運動かもしれないと思いました。 Emacs Lispはいくつかの例外を除いてCLと幾分互換性があります。notable differences上記の例で使用されているの形式関数は大きな違いの1つです。Emacsでのデータベースの構築と維持?
ここには、CLでデータベースを構築、保存、ロードするために必要なすべてのコードが含まれています。 Emacsでうまく動作するように修正できますか?私はを選択しましたとここではが機能しますが、それらを含めることをお勧めします。 Emacsによるデータベースの構築と保守の方が優れているのでしょうか?個人的に、私はCLを学び、既存の問題を解決するための練習としてこれを使用しています。
;; Simple Common Lisp database ;; http://www.gigamonkeys.com/book/practical-a-simple-database.html ;; (defvar *db* nil) (defun make-cd (title artist rating ripped) (list :title title :artist artist :rating rating :ripped ripped)) (defun add-record (cd) (push cd *db*)) (defun dump-db() (dolist (cd *db*) (format t "~{~a:~10t~a~%~}~%" cd))) (defun save-db (filename) (with-open-file (out filename :direction :output :if-exists :supersede) (with-standard-io-syntax (print *db* out)))) (defun load-db (filename) (with-open-file (in filename) (with-standard-io-syntax (setf *db* (read in))))) ; === ; ; Add some records ; (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)) ; (dump-db) ; (save-db "cd.db") ; (load-db "cd.db")
あなたはサンプルのDBファイルが含まれてもらえますか?あなたのコマンドはインタラクティブではありません。あなたはそれらをどのように呼びますか? –
(with-temp-buffer ...)セクションを抽出して使用しました。 –