Помогите понять эту строчку в lisp - PullRequest
3 голосов
/ 28 сентября 2011
(defun dump-db ()
  (dolist (cd *db*)
    (format t "~{~a:~10t~a~%~}~%" cd)))

dolist заставляет его пройти через каждый элемент списка *db* с переменной cd, верно?

и ~a означает распечатать его в более читабельной форме, но эти два смущают меня.

~{ ~} означает ли это, что между ними будет форматироваться каждый элемент *db*?

Что такое : в ~{~a:?

1 Ответ

10 голосов
/ 28 сентября 2011

[Директива] iteration ~{ [...] говорит FORMAT выполнять итерации по элементам списка или по неявному списку аргументов формата. 1

: не является директивой format, она просто печатается дословно после каждого элемента:

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