aboutsummaryrefslogtreecommitdiff
path: root/algebraic-structures.private.list.scm
diff options
context:
space:
mode:
authorMasaya Tojo <masaya@tojo.tokyo>2024-06-16 01:58:48 +0900
committerMasaya Tojo <masaya@tojo.tokyo>2024-06-16 01:58:48 +0900
commit5931a79a5a915035e01b9fb22a3edfde7895e424 (patch)
tree7704b515651e83db421ee342f02894bfa75557cb /algebraic-structures.private.list.scm
parent3f2efd08c5e93b2d20d3f4a32bdfec40a8b14730 (diff)
Add list implementations
Diffstat (limited to 'algebraic-structures.private.list.scm')
-rw-r--r--algebraic-structures.private.list.scm19
1 files changed, 19 insertions, 0 deletions
diff --git a/algebraic-structures.private.list.scm b/algebraic-structures.private.list.scm
new file mode 100644
index 0000000..4710b40
--- /dev/null
+++ b/algebraic-structures.private.list.scm
@@ -0,0 +1,19 @@
+(module (algebraic-structures private list) (<> unit fold reduce map1)
+ (import scheme
+ (rename (only (srfi 1) fold reduce)
+ (fold srfi:fold)
+ (reduce srfi:reduce))
+ (only (chicken base) assert))
+
+ (define <> append)
+
+ (define unit '())
+
+ (define fold srfi:fold)
+
+ (define (reduce f xs)
+ (assert (not (null? xs)))
+ (srfi:reduce f #f xs))
+
+ (define (map1 f xs)
+ (map f xs)))