Common lisp 通用Lisp和can'的新功能;我不明白为什么defun函数在简单情况下不起作用

Common lisp 通用Lisp和can'的新功能;我不明白为什么defun函数在简单情况下不起作用,common-lisp,practical-common-lisp,Common Lisp,Practical Common Lisp,在“实用公共Lisp”的第3章中,我们被要求通过创建函数make CD来创建CD数据库,该函数定义如下: (defun make-cd (title artist rating ripped) (list :title title :artist artist :rating rating :ripped ripped)) 在我的REPL(使用粘液)中,这似乎符合计划。。。直到我开始向数据库添加值,例如 (make-cd "Roses" "Kathy Mattea" 7 t) (:TITL

在“实用公共Lisp”的第3章中,我们被要求通过创建函数
make CD
来创建CD数据库,该函数定义如下:

(defun make-cd (title artist rating ripped)
  (list :title title :artist artist :rating rating :ripped ripped))
在我的REPL(使用粘液)中,这似乎符合计划。。。直到我开始向数据库添加值,例如

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

在本书中,向数据库添加条目的说明如下:

CL-USER> (make-cd "Roses" "Kathy Mattea" 7 t)
CL-USER>
是REPL的提示符,后跟您的输入

下面的行不是以提示符开头,而是指示函数调用返回的输出:

(:TITLE "Roses" :ARTIST "Kathy Mattea" :RATING 7 :RIPPED T)

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

make cd返回一个列表。该错误表示您正在尝试评估列表。第一个元素不是有效的函数。您在第一个列表末尾缺少一个paren