Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
clojure中的Drop函数_Clojure - Fatal编程技术网

clojure中的Drop函数

clojure中的Drop函数,clojure,Clojure,给定以下函数,我无法理解map函数作为第二个参数接收的是什么 (def tails (fn [seq] (map drop (range (inc (count seq))) (repeat (inc (count seq)) seq)))) 鉴于seq是(列表1 2 3) 该行: (range (inc (count seq))) 将产生((1 2 3)(1 2 3)(1 2 3)) 这句话: (range (inc (count seq))) 将

给定以下函数,我无法理解map函数作为第二个参数接收的是什么

(def tails
 (fn [seq]
   (map drop
        (range (inc (count seq)))
        (repeat (inc (count seq)) seq))))
鉴于seq是(列表1 2 3)

该行:

(range (inc (count seq)))
将产生((1 2 3)(1 2 3)(1 2 3))

这句话:

(range (inc (count seq)))
将产生(01 2 3)


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

第二个参数是
seq
重复的次数与它的长度+1一样多,因此您可以从中删除0到长度元素

对于
”(1 2 3)
,您可以

(map drop '(0 1 2 3) (repeat 4 '( 1 2 3)))
这(当实现时)将成为

(列表(删除0'(1 2 3))(删除1'(1 2 3))(删除2'(1 2 3))(删除3'(1 2 3)))

评估结果是


((123)(23)(3)()

谢谢你,迭戈,但我没有弄清楚(地图放置)(0123)(重复4'(1233))是如何评估的。你能再给我解释一下吗?没关系。Map可以接收两个序列,然后像您提到的那样应用函数。谢谢