Common Lisp的新功能,无法理解为什么defun功能在简单的情况下不起作用

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的新手,不知道这里出了什么问题!

eMB*_*Bee 7

在本书中,向数据库添加条目的指令是:

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)

您应该只输入第一行,然后验证您获得的输出是否与第二行匹配.