【发布时间】:2010-12-16 12:58:54
【问题描述】:
我正在尝试编写一个名为 map-longest 的 Clojure 实用程序函数(感谢替代名称建议)。此函数将具有以下“签名”:
(map-longest fun missing-value-seq c1 & colls)
并且行为类似于map,除了它将继续处理提供的集合直到longest用完。对于比最长的集合短的集合,当它用完值时,它将从missing-values-seq 中获取它们。它应该是惰性的,但显然不能与无限集合一起使用。
使用示例:
(print (apply str
(map-longest #(str %1 \space %2 \space %3 \newline) (repeatedly "--")
["a1" "a2" "a3"] ["b1" "b2"] ["c1" "c2" "c3" "c4"])))
它应该产生以下输出:
a1 b1 c1
a2 b2 c2
a3 -- c3
-- -- c4
但我可能打错电话了。
我该如何实现呢? clojure.core 或 clojure-contrib 库是否已经有类似的东西?作为missing-value-seq 的替代方案,是否最好传入第二个函数来生成缺失值(例如:在我的示例中为#(identity "--"))?
用例:我正在编写一个小型文本蜘蛛纸牌播放器,作为学习 Clojure/函数式编程的练习。我需要能够展示游戏画面(纯粹主义者的画面:-))。
【问题讨论】: