Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define tbatch
- (case-lambda
- ((reducer)
- (tbatch null-transducer reducer))
- ((t r)
- (lambda (reducer)
- (let ((cur-reducer (t r))
- (cur-state (r)))
- (case-lambda
- (() (reducer))
- ((result) (reducer result))
- ((result value)
- (let ((val (cur-reducer cur-state value)))
- (cond
- ;; cur-reducer is done. Push value downstream
- ;; re-instantiate the state and the cur-reducer
- ((reduced? val)
- (let ((unreduced-val (unreduce val)))
- (set! cur-reducer (t r))
- (set! cur-state (cur-reducer))
- (reducer result (cur-reducer unreduced-val))))
- (else
- (set! cur-state val)
- result))))))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement