感測器
感測器允許在消耗時控制懶惰。例如,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)))
;; => ()