Lisp:正在读取包含url的文件

Lisp:正在读取包含url的文件,lisp,common-lisp,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

我是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”解释为一个包,对吗?)。但是,如何将uri保存到文件并再次读取,而不使Lisp抛出此错误?

备选方案:

  • 把它写成一个字符串
  • 使用读字符、读行或读序列
  • 高级:使用自定义读取器宏进行写入和读取
  • 顺便说一句,请发布格式化的Lisp代码。

    备选方案:

  • 把它写成一个字符串
  • 使用读字符、读行或读序列
  • 高级:使用自定义读取器宏进行写入和读取

  • 顺便说一句,请发布格式化的Lisp代码。

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

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

    非常感谢!(这是我的第一篇帖子,我很高兴我找到了如何发布代码的方法;与在其他方面发布代码相比,似乎有点奇怪,也不太实用)@user2080255:是的,我使用编辑器将代码向右移动。选择一些文本,然后在Emacs中键入“c-u 4 c-x选项卡”。使用-4而不是4向后移动。非常感谢!(这是我的第一篇帖子,我很高兴我找到了如何发布代码的方法;与在其他方面发布代码相比,似乎有点奇怪,也不太实用)@user2080255:是的,我使用编辑器将代码向右移动。选择一些文本,然后在Emacs中键入“c-u 4 c-x选项卡”。使用-4而不是4向后移动。