加载数据库的时候,出现这个错误提示是什么意思啊?

jiangjun0105 发布于 2014/06/27 16:42
阅读 196
收藏 0

@FreeBlues 你好,想跟你请教个问题:又来麻烦你了。。真不好意思啊。

我在repl里输入加载数据库的代码如下

CL-USER> (load-db "/home/jiangjun/lispbox-0.7/bd.txt")

然后,出了错误提示:value ((:NAME "happier" :AUTHOR "ben" :PRICE
        "12")) is not of the expected type SYMBOL.
   [Condition of type TYPE-ERROR]

这个。。。是啥情况?怎么解决?

万分感谢!


下面是保存数据库和加载数据库的代码,基本照着你的文章里写的,但是我没能成功让它支持中文,所以都是用英文的:
  (with-open-file (attach-info address
                   :direction :output
                   :if-exists :supersede)
    (with-standard-io-syntax
      (print *book-database* attach-info))))

(defun load-db (address)
  (with-open-file (attach-info address)
    (with-standard-io-syntax
      (set *book-database* (read attach-info)))))

然后就是上面提到的运行的时候,输入那个函数然后就出来了那样的错误,本来想给你截图,但是图片不能超过200k我也不知道咋把图片弄小,所以就还是复制文字了。
对了,数据库内容,就是我想加载的那个bd.txt的内容吗吧:


((:NAME "eng" :AUTHOR "ann" :PRICE "43") (:NAME "happier" :AUTHOR "ben" :PRICE "12"))


还有那个cl实现。。没听到,目前还是纯菜鸟一枚啊,而且之前就学过一点c语言,不是计算机专业,术语都听不懂。

lispbox的安装是从书的作者提过的网站上下载的ubuntu版本,解压后运行那个lisobox.sh就可以用了,然后保存的文件都是.lisp结尾的文件。不知道。。这些信息对你有没有用。



以下是问题补充:

@jiangjun0105:下面是保存数据库和加载数据库的代码,基本照着你的文章里写的,但是我没能成功让它支持中文,所以都是用英文的: (with-open-file (attach-info address :direction :output :if-exists :supersede) (with-standard-io-syntax (print *book-database* attach-info)))) (defun load-db (address) (with-open-file (attach-info address) (with-standard-io-syntax (set *book-database* (read attach-info))))) 然后就是上面提到的运行的时候,输入那个函数然后就出来了那样的错误,本来想给你截图,但是图片不能超过200k我也不知道咋把图片弄小,所以就还是复制文字了。 对了,数据库内容: (2014/06/27 18:44)
加载中
0
FreeBlues
FreeBlues

Lispbox使用的是CCL,你的问题是这句 (set *book-database* (read attach-info))))),

赋值函数写错了,应该是 (setf *book-database* (read attach-info)))))

j
jiangjun0105
没想到是这么低级的错误啊。。。好丢人啊。。。
0
FreeBlues
FreeBlues

不必客气,我没遇到过类似问题。

把你的lisp代码和文本数据库的内容发上来,另外说一下使用的CL实现是哪一种(SBCL、CCL或是CLISP),在我的环境上试试。

j
jiangjun0105
本来想写在问题补充里,结果发现格式全没了,就修改了问题,问题补充那部分你就不用看了。多谢多谢啊!
返回顶部
顶部