aboutsummaryrefslogtreecommitdiff
path: root/algebraic-structures.private.stream.scm
diff options
context:
space:
mode:
authorMasaya Tojo <masaya@tojo.tokyo>2024-06-16 12:15:11 +0900
committerMasaya Tojo <masaya@tojo.tokyo>2024-06-16 12:15:11 +0900
commite51a5f32bb8f23eb0fd27213cb36ce09a42a6386 (patch)
tree3c4d043a91d56fff6e7d59e3ed829dbeee0dbe26 /algebraic-structures.private.stream.scm
parenta0ed10aa2a780894c8f63bd4bde218d56eba411e (diff)
Add stream implementations
Diffstat (limited to 'algebraic-structures.private.stream.scm')
-rw-r--r--algebraic-structures.private.stream.scm20
1 files changed, 20 insertions, 0 deletions
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)))