我试图用lisp调用一个函数,该函数将其参数分配给列表并将其打印到控制台,但没有在控制台上打印任何内容。 代码如下所示
10
对make-cd函数的调用应返回
(defun make-cd (title artist rating ripped)
(list :title title :artist artist :rating rating :ripped ripped))
(make-cd "Roses" "Kathy Mattea" 7 t)
如何解决此问题?
答案 0 :(得分:1)
(defun make-cd (title artist rating ripped)
(print (list :title title :artist artist :rating rating :ripped ripped)))
对不起。
答案 1 :(得分:1)
您可以在此处查看:What's the difference between write, print, pprint, princ, and prin1?
format
也可用于在REPL或任何输出流(文件,管道等)中打印列表。
(format t "~a" (list "Peter" 15 "Steven" 59.4d0))
=> (Peter 15 Steven 59.4d0)
您可以查看CLHS中的内容:http://www.lispworks.com/documentation/lw50/CLHS/Body/f_format.htm 或以《实用的普通Lisp》为例,我相信:http://www.gigamonkeys.com/book/a-few-format-recipes.html
答案 2 :(得分:1)
您可以通过将值推送到CD列表中来简单地返回该值,我相信您使用的书中的示例最初会使用该值(稍后您将在打印数据库时格式化数据库中的每张CD):>
(make-cd "Cece Winans" "Mercy Said No" 10 t)
((:ARTIST "Cece Winans" :TITLE "Mercy Said No" :RATING 10 :RIPPED T))
因此,如果我调用该函数,它将把CD的内容返回到控制台:
df
如果您将CD推送到CD的数据库,则该值将返回到控制台。