2021-06-04 13:56:03 +00:00
|
|
|
;;; SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
;;; SPDX-FileCopyrightText: Copyright © 2010-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
2021-06-01 15:19:24 +00:00
|
|
|
|
2020-04-27 18:27:48 +00:00
|
|
|
#lang syndicate
|
2019-06-11 17:33:37 +00:00
|
|
|
|
|
|
|
(provide make-buffer)
|
|
|
|
|
|
|
|
(define (make-buffer)
|
|
|
|
(field [pending '()])
|
|
|
|
(define (push item)
|
|
|
|
(pending (cons item (pending))))
|
|
|
|
(define (drain handler)
|
|
|
|
(begin/dataflow
|
|
|
|
(when (pair? (pending))
|
|
|
|
(for [(item (in-list (reverse (pending))))] (handler item))
|
|
|
|
(pending '()))))
|
|
|
|
(values push drain))
|