帮助理解lisp中的这一行

时间:2011-09-28 12:20:06

标签: lisp common-lisp

(defun dump-db ()
  (dolist (cd *db*)
    (format t "~{~a:~10t~a~%~}~%" cd)))

dolist会让列表*db*的每个元素都变为cd吗?

~a意味着以更易读的形式打印它,但这两个让我感到困惑。

~{ ~}这是否意味着中间的任何内容都将是*db*的每个元素的格式化方式?

:中的~{~a:是什么?

1 个答案:

答案 0 :(得分:10)

  

[迭代]指令~{ [...]告诉FORMAT迭代列表的元素或格式参数的隐式列表。 1

:不是format指令,只是在每个元素后逐字打印:

> (format t "~{~a: ~}" '(foo bar))
FOO: BAR: