Moritz Heidkamp  committed dca091c

implement flush-channel-to-output-port as the inverse of siphon-input-channel

  • Participants
  • Parent commits 406c418

Comments (0)

Files changed (2)

  ;; derivators
  fork-channel fold-channel map-channel filter-channel
- siphon-channel siphon-input-port
+ siphon-channel siphon-input-port flush-channel-to-output-port
  ;; operations
  channel-enqueue channel-receive channel-receive/delay
                    (channel-enqueue channel message))))
+(define (flush-channel-to-output-port channel port write)
+  (on-channel-receive
+   channel
+   (lambda (message)
+     (write message port))))

File tests/run.scm

   (test '(this is a test) (channel-messages channel)))
+(test-group "flush-channel-to-output-port"
+  (define port (open-output-string))
+  (define channel (make-channel 'foo 'bar))
+  (flush-channel-to-output-port channel port write)
+  (test "foobar" (get-output-string port))
+  (channel-enqueue channel 'baz)
+  (test "foobarbaz" (get-output-string port)))