传感器
传感器允许在消耗时控制懒惰。例如,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)))
;; => ()