0 common-lisp practical-common-lisp
在"Practical Common Lisp"的第3章中,我们被要求通过创建一个make-cd定义如下的函数来创建CD数据库:
(defun make-cd (title artist rating ripped)
(list :title title :artist artist :rating rating :ripped ripped))
Run Code Online (Sandbox Code Playgroud)
在我的REPL中(使用SLIME)这似乎按计划进行...直到我来为数据库添加一个值,例如
(make-cd "Roses" "Kathy Mattea" 7 t)
(:TITLE "Roses" :ARTIST "Kathy Mattea" :RATING 7 :RIPPED T)
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误消息
Undefined function :TITLE called with arguments ("Roses"
:ARTIST
"Kathy Mattea"
:RATING
7
:RIPPED
T) .
[Condition of type CCL::UNDEFINED-FUNCTION-CALL]
Run Code Online (Sandbox Code Playgroud)
这段代码是书中所写的字符字符,没有任何说明可以解释错误或此错误的含义.
我是Lisp的新手,不知道这里出了什么问题!
在本书中,向数据库添加条目的指令是:
CL-USER> (make-cd "Roses" "Kathy Mattea" 7 t)
Run Code Online (Sandbox Code Playgroud)
CL-USER> 是REPL的提示,然后是您的输入.
后面的行不是以提示符开头,而是表示函数调用返回的输出:
(:TITLE "Roses" :ARTIST "Kathy Mattea" :RATING 7 :RIPPED T)
Run Code Online (Sandbox Code Playgroud)
您应该只输入第一行,然后验证您获得的输出是否与第二行匹配.