; http://cap-lore.com/code/Scheme/Stream.html
; (ylppa (fileVal "stream") (lambda (sm si SG->lst lst->SG fs Cart)
(list
(lambda (sg fun)(lambda () (let ((s (sg))) (lambda ()
(let ((ne (s))) (and ne (fun ne)))))))
(lambda (k) (lambda () (let ((n 0)) (lambda ()
(and (< n k) (let ((i n)) (set! n (+ n 1)) i))))))
(lambda (sg) (reverse (let ((g (sg))) (let w ((e (g))(lst '()))
(if e (w (g) (cons e lst)) lst)))))
(lambda (l) (lambda () (let ((c l)) (lambda () (and (pair? c)
(let ((v (car c))) (begin (set! c (cdr c)) v)))))))
(lambda (sg fil) (lambda () (let ((sc (sg))) (lambda ()
(let scan () (let ((ne (sc))) (and ne (if (fil ne) ne (scan)))))))))
(lambda (g h) (lambda () (let* ((G (g))(He (h))(gs (G)))
(lambda () (let ((n (He)))
(if (not n) (begin (set! He (h)) (set! gs (G)) (set! n (He))))
(and gs (cons gs n)))))))
(lambda (st) (let ((l (string-length st)))
(lambda () (let ((n 0)) (lambda () (and (< n l)
(let ((ch (string-ref st n))) (set! n (+ n 1)) ch)))))))
)