Mapping 使用mapc的现实例子是什么?

Mapping 使用mapc的现实例子是什么?,mapping,common-lisp,Mapping,Common Lisp,我刚才在考虑common lisp中的不同映射函数,如中所述。我非常习惯于mapcar,认为它是最容易理解的。但是使用mapc的真实例子是什么呢?就我所知,hyperspec中的示例使用它来产生副作用。但是为什么它返回list参数呢 当这种映射比使用循环等的迭代更有利时,是否有一般规则?使用mapc的真实示例是什么? (mapc#'打印我的列表)比(dolist(x我的列表)(打印x))更清晰。 为什么它返回list参数? 功能遗产强加了这样一种思想:每个功能都应该返回有用的东西;因为它是原始列

我刚才在考虑
common lisp
中的不同映射函数,如中所述。我非常习惯于
mapcar
,认为它是最容易理解的。但是使用
mapc
的真实例子是什么呢?就我所知,
hyperspec
中的示例使用它来产生副作用。但是为什么它返回list参数呢

当这种映射比使用
循环
等的迭代更有利时,是否有一般规则?

使用
mapc
的真实示例是什么?
(mapc#'打印我的列表)
(dolist(x我的列表)(打印x))更清晰。

为什么它返回list参数? 功能遗产强加了这样一种思想:每个功能都应该返回有用的东西;因为它是原始列表

我认为返回它的list参数的原因与此相同——通过向代码中添加输出来简化调试。例如,假设你做了如下的事情

(mapcar #'important-processing
        list-with-weird-elements)
您希望在保留逻辑的同时查看列表中的内容:

(mapcar #'important-processing
        (mapc #'show-weird-object list-with-weird-elements))
而且,CL中的很多东西都是为你准备的

当这种映射比使用
循环
等的迭代更有利时,是否有一般规则。?
只有当你已经有了一个能满足你需要的功能时,就像上面所说的。

我真的很喜欢“歇斯底里的理由”@MartinBuchmann也被称为“歇斯底里的葡萄干”,如果你觉得果味浓郁。