【发布时间】:2014-02-27 07:26:02
【问题描述】:
在lisp/scheme中,有没有使用set product作为函数输入的形式? map 形式对需要 n 个参数的函数使用 n 个长度相等的列表。有时,我们需要参数来自一组集合的乘积。例如:
(pmap (λ (d p) foo)
A B)
这里,列表A可能与B有不同的长度,pmap馈送A乘积的每个元素strong> 和 B 到 lambda 表达式。
表格for* 的方案/球拍可以完成这项工作:
(for* ([x '(0 2 4)]
[y '(1 3 5)])
((λ (d p)
(printf "(~a, ~a)\n" d p))
x y))
输出:
(0, 1)
(0, 3)
(0, 5)
(2, 1)
(2, 3)
(2, 5)
(4, 1)
(4, 3)
(4, 5)
我想知道在 scheme 中是否存在类似于 map 或 fold 的其他方式来做到这一点。
【问题讨论】: