1

私は Lisp が初めてで、非常に基本的な質問があります。

リストを含むリストを使用しています。

(defvar *stationen* nil)

(defun make-station (name uri)
  (list :name name :uri uri))

(defun save-db ()
  (with-open-file (out "list.txt"
                       :direction :output
                       :if-exists :supersede)
    (with-standard-io-syntax
      (princ *stationen* out))))

(defun load-db ()
  (with-open-file (in "list.txt")
    (with-standard-io-syntax
      (setf *stationen* (READ in)))))

(load-db)

データには uri が含まれていますhttp://www....。そのリストを読み取ろうとすると、次のエラーが表示されます。

The name "HTTP" does not designate any package.
[Condition of type SB-KERNEL:SIMPLE-PACKAGE-ERROR]

これがなぜ起こるかは推測できます (Lisp は "http" をパッケージとして解釈しようとしていますよね?)。しかし、Lisp がこのエラーをスローすることなく、どうすれば uri をファイルに保存して再度読み取ることができるでしょうか?

4

2 に答える 2

1

代替案:

  1. 文字列として書くだけです。
  2. READ-CHAR、READ-LINE、またはREAD-SEQUENCEを使用してください
  3. 高度な: カスタム リーダー マクロを使用した書き込みと読み取り

ところで、フォーマットされた Lisp コードを投稿してください。

于 2013-02-17T10:55:01.697 に答える
0

または、PRINC の代わりに PRINT を使用して URL を書き出すこともできます。

于 2013-02-17T19:33:40.577 に答える