在“实践通用Lisp”的第3章中,要求我们通过创建函数make-cd
来创建CD数据库,该函数定义如下:
(defun make-cd (title artist rating ripped)
(list :title title :artist artist :rating rating :ripped ripped))
在我的REPL(使用SLIME)中,这似乎是按计划进行的……直到我开始向数据库中添加一个值,例如
(make-cd "Roses" "Kathy Mattea" 7 t)
(:TITLE "Roses" :ARTIST "Kathy Mattea" :RATING 7 :RIPPED T)
然后我收到以下错误消息
Undefined function :TITLE called with arguments ("Roses"
:ARTIST
"Kathy Mattea"
:RATING
7
:RIPPED
T) .
[Condition of type CCL::UNDEFINED-FUNCTION-CALL]
这段代码是按字符排列的,本书中写着,没有注释说明错误或此错误的含义。
我是Lisp的新手,不知道这里出了什么问题!
答案 0 :(得分:7)
在书中向数据库添加条目的说明是:
CL-USER> (make-cd "Roses" "Kathy Mattea" 7 t)
CL-USER>
是REPL的提示,然后是您的输入。
下一行不是以提示符开头,而是指示函数调用返回的输出:
(:TITLE "Roses" :ARTIST "Kathy Mattea" :RATING 7 :RIPPED T)
您应该只输入第一行,然后确认您获得的输出与第二行匹配。