如何调用以Lisp打印列表的函数?

时间:2019-05-04 08:50:13

标签: common-lisp

我试图用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)

如何解决此问题?

3 个答案:

答案 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的数据库,则该值将返回到控制台。