首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有类似mapcdr函数的东西?

有没有类似mapcdr函数的东西?
EN

Stack Overflow用户
提问于 2015-03-09 00:05:14
回答 2查看 484关注 0票数 2

clojure的map可能是其他lisp所说的mapcar,而car大致相当于clojure的first。这让我想知道是否有mapcdr,以及clojure是否有这样一个函数,其中cdr大致相当于clojure的rest

我想象的行为是这样的:

代码语言:javascript
复制
(mapcdr #(apply + %) [1 2 3 4 5])
=> (15 14 12 9 5)

扩展看起来像这样:

代码语言:javascript
复制
(list (apply + [1 2 3 4 5])
      (apply + [2 3 4 5])
      (apply + [3 4 5])
      (apply + [4 5])
      (apply + [5])
EN

回答 2

Stack Overflow用户

发布于 2015-03-09 01:04:53

您可以使用fn reductions,它几乎可以执行您想要的操作:

代码语言:javascript
复制
(->> [1 2 3 4 5]
     reverse
     (reductions +)
     reverse)
票数 1
EN

Stack Overflow用户

发布于 2015-03-09 22:10:11

写的东西很快,但如果能有更本地化的东西还是很好的。

代码语言:javascript
复制
(defn maplist
  "Based on Common Lisp's maplist."
  [fn coll]
  (if (empty? coll) nil
      (cons (fn coll)
            (maplist fn (rest coll)))))

(maplist #(apply + %) [1 2 3 4 5])
=> (15 14 12 9 5)

如果没有,我会很惊讶,因为它看起来就像是标准的map只是maplist,而first则围绕着coll

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28928620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档