Advertisement
Guest User

Untitled

a guest
Dec 19th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.83 KB | None | 0 0
  1. (define tbatch
  2.   (case-lambda
  3.     ((reducer)
  4.      (tbatch null-transducer reducer))
  5.     ((t r)
  6.      (lambda (reducer)
  7.        (let ((cur-reducer (t r))
  8.              (cur-state (r)))
  9.          (case-lambda
  10.            (() (reducer))
  11.            ((result) (reducer result))
  12.            ((result value)
  13.             (let ((val (cur-reducer cur-state value)))
  14.               (cond
  15.                ;; cur-reducer is done. Push value downstream
  16.                ;; re-instantiate the state and the cur-reducer
  17.                ((reduced? val)
  18.                 (let ((unreduced-val (unreduce val)))
  19.                   (set! cur-reducer (t r))
  20.                   (set! cur-state (cur-reducer))
  21.                   (reducer result (cur-reducer unreduced-val))))
  22.                (else
  23.                 (set! cur-state val)
  24.                 result))))))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement