clojure中的Drop函数
给定以下函数,我无法理解map函数作为第二个参数接收的是什么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))) 将
(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可以接收两个序列,然后像您提到的那样应用函数。谢谢