Вложив функцию format
, вы можете делать то, что хотите.
(format t (format nil "~~{~~~Aa~~}" 4) '("aa" "bb" "cc"))
;; returns: aa bb cc
Здесь внутренняя директива format
: nil
в качестве первого аргумента, format
возвращает строку.
(format nil "~~{~~~Aa~~}" 4)
;; returns: "~{~4a~}" - and this is exactly what you want to give
;; to the outer `format` as second argument!
Конечно, вы можете написать функцию для этого:
(defun format-by-padding-over (lst padding)
(format t (format nil "~~{~~~Aa~~}" padding) lst))
А затем:
(format-by-padding-over '("aa" "bb" "cc") 4)
;; aa bb cc
;; NIL
Я выучил этот трюк здесь от @Sylwester (большое спасибо!).