Post 惰性序列处理 (Clojure)
Post Processing to Lazy-Sequences (Clojure)
假设我有一个称为数字的惰性序列,它给我一个无限的数字序列:0、1、2、3、4、5、6...
(def numbers (iterate inc 0))
我通过将无穷大传递给函数 take 来限制无穷大。例如:
(take 3 numbers)
; > (0 1 2)
我在问自己如何向惰性序列的成员添加一些 post 处理。更具体地说:
当我使用 take:
时,我将如何声明一个会产生以下输出的函数 "numbers-doubled"
(take 3 numbers-doubled)
; > ("00" "11" "22")
您可以在 iterate
函数和 take
函数之间使用映射函数。由于 map
是惰性的,它只会消耗后面 take
函数请求的数量。
(take 3 (map #(str % %) numbers))
您可以轻松定义该地图,使其成为自己的无限序列:
(def numbers-doubled
(map #(str % %) numbers))
(take 3 numbers-doubled)
假设我有一个称为数字的惰性序列,它给我一个无限的数字序列:0、1、2、3、4、5、6...
(def numbers (iterate inc 0))
我通过将无穷大传递给函数 take 来限制无穷大。例如:
(take 3 numbers)
; > (0 1 2)
我在问自己如何向惰性序列的成员添加一些 post 处理。更具体地说: 当我使用 take:
时,我将如何声明一个会产生以下输出的函数 "numbers-doubled"(take 3 numbers-doubled)
; > ("00" "11" "22")
您可以在 iterate
函数和 take
函数之间使用映射函数。由于 map
是惰性的,它只会消耗后面 take
函数请求的数量。
(take 3 (map #(str % %) numbers))
您可以轻松定义该地图,使其成为自己的无限序列:
(def numbers-doubled
(map #(str % %) numbers))
(take 3 numbers-doubled)