From e51a5f32bb8f23eb0fd27213cb36ce09a42a6386 Mon Sep 17 00:00:00 2001 From: Masaya Tojo Date: Sun, 16 Jun 2024 12:15:11 +0900 Subject: Add stream implementations --- algebraic-structures.private.stream.applicative.scm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 algebraic-structures.private.stream.applicative.scm (limited to 'algebraic-structures.private.stream.applicative.scm') diff --git a/algebraic-structures.private.stream.applicative.scm b/algebraic-structures.private.stream.applicative.scm new file mode 100644 index 0000000..0389ad9 --- /dev/null +++ b/algebraic-structures.private.stream.applicative.scm @@ -0,0 +1,17 @@ +(module (algebraic-structures private stream applicative) () + (import scheme + (srfi 41) + (only (chicken base) cute) + (chicken module)) + (export pure map2) + (reexport (algebraic-structures stream functor)) + + (define (pure x) (stream x)) + + (define-stream (product op s1 s2) + (if (stream-null? s1) + stream-null + (stream-append (stream-map (cute op (stream-car s1) <>) s2) + (product op (stream-cdr s1) s2)))) + + (define map2 product)) -- cgit v1.2.3