Lisp:读取包含url的文件

时间:2013-02-17 10:48:36

标签: lisp common-lisp

我是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保存到文件并再次读取?

2 个答案:

答案 0 :(得分:1)

备选方案:

  1. 只需将其写为字符串。
  2. 使用READ-CHAR,READ-LINE或READ-SEQUENCE
  3. 高级:使用自定义阅读器宏进行写入和阅读
  4. 不过,请发布格式化的Lisp代码。

答案 1 :(得分:0)

或者,您可以使用PRINT而不是PRINC来写出URL。