在 Scheme 中,该函数(map fn list0 [list1 .. listN])
具有列表必须具有相同数量的元素的限制。来自 Python,我错过了 Python 列表推导的自由,它看起来很像map
上面,但没有这个限制。
我很想实现一个替代的“my-map”,它允许不同大小的列表,遍历所有列表的前 N 个元素,其中 N 是最短列表的长度。
例如,让num
be10
和lst
be (1 2 3)
。使用 my-map,我希望编写如下表达式:
(my-map + (circular-list num) lst)))
并得到:
(11 12 13)
我比传统的更容易阅读
(map + (lambda (arg) (+ num arg)) lst)
或者
(map + (make-list (length lst) num) lst)
两个问题:
- 作为一个 Scheme 新手,我是否忽略了限制 `map` 的重要原因?
- 类似 `my-map` 的东西是否已经存在于 Scheme 或 SRFI 中?我确实看过 srfi-42,但要么它不是我要找的东西,要么就是它,但并不明显。