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.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 algebraic-structures.private.stream.scm (limited to 'algebraic-structures.private.stream.scm') diff --git a/algebraic-structures.private.stream.scm b/algebraic-structures.private.stream.scm new file mode 100644 index 0000000..a268841 --- /dev/null +++ b/algebraic-structures.private.stream.scm @@ -0,0 +1,20 @@ +(module (algebraic-structures private stream) (<> unit fold reduce map1) + (import scheme + (srfi 41) + (streams utils) + (only (chicken base) assert)) + + (define (<> xs ys) (stream-append xs ys)) + + (define unit stream-null) + + (define (fold f init xs) + (stream-fold (lambda (x acc) (f acc x)) + init + xs)) + + (define (reduce f xs) + (stream-fold-one f xs)) + + (define (map1 f xs) + (stream-map f xs))) -- cgit v1.2.3