Что является реальным примером использования mapc
?
(mapc #'print my-list)
яснее, чем (dolist (x my-list) (print x))
Почему он возвращает аргумент списка?
Функциональное наследие предполагает, что каждая функция должна возвращать что-то полезное;для mapc
это исходный список.
Я думаю mapc
возвращает свой аргумент списка по той же причине print
делает - чтобы упростить отладку, посыпая ваш код выводом.Например, предположим, что вы делаете что-то вроде
(mapcar #'important-processing
list-with-weird-elements)
Вы хотите увидеть, что находится внутри списка, сохраняя логику:
(mapcar #'important-processing
(mapc #'show-weird-object list-with-weird-elements))
Кроме того, многое в CL предназначено для "истерические причины" .
Существует ли общее правило, когда такое отображение выгодно по итерации с использованием loop
и т. д.? 1032 * Только если у вас уже есть функция, котораяделает то, что вам нужно, как print
выше.