在clojure中掉落功能

时间:2014-09-28 05:11:17

标签: clojure

鉴于以下功能,我无法理解作为第二个参数接收的地图功能。

(def tails
 (fn [seq]
   (map drop
        (range (inc (count seq)))
        (repeat (inc (count seq)) seq))))

鉴于seq是(list 1 2 3)

该行:

(range (inc (count seq)))

将产生((1 2 3)(1 2 3)(1 2 3))

这一行:

(range (inc (count seq)))

将产生(0 1 2 3)

那么,接收map函数作为第二个参数是什么?

1 个答案:

答案 0 :(得分:1)

第二个参数seq重复次数为长度+ 1,因此您可以从中删除0到长度的元素。

对于'(1 2 3),你得到

(map drop '(0 1 2 3) (repeat 4 '( 1 2 3)))

(实现时)将等同于

(list (drop 0 '(1 2 3)) (drop 1 '(1 2 3)) (drop 2 '(1 2 3)) (drop 3 '(1 2 3)))

评估为

((1 2 3) (2 3) (3) ())