传感器

传感器允许在消耗时控制懒惰。例如,into 如预期的那样渴望,但是 sequence 会懒洋洋地消耗通过换能器的序列。但是,懒惰保证是不同的。最初将消耗足够的源来生成元素:

(take 0 (sequence (map #(do (prn '-> %) %)) (range 5)))
;; -> 0
;; => ()

或者确定列表是否为空:

(take 0 (sequence (comp (map #(do (prn '-> %) %)) (remove number?)) (range 5)))
;; -> 0
;; -> 1
;; -> 2
;; -> 3
;; -> 4
;; => ()

这与通常的懒惰序列行为不同:

(take 0 (map #(do (prn '-> %) %) (range 5)))
;; => ()