lib/srfi/srfi-1.scm: add append-map, filter, find.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sat, 13 Aug 2016 23:40:45 +0000 (01:40 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sat, 13 Aug 2016 23:40:45 +0000 (01:40 +0200)
lib/srfi/srfi-1.scm [new file with mode: 0644]

diff --git a/lib/srfi/srfi-1.scm b/lib/srfi/srfi-1.scm
new file mode 100644 (file)
index 0000000..8bc8d83
--- /dev/null
@@ -0,0 +1,15 @@
+(define (find pred lst)
+  (let loop ((lst lst))
+    (if (null? lst) #f
+        (if (pred (car lst)) (car lst)
+            (loop (cdr lst))))))
+
+(define (filter pred lst)
+  (let loop ((lst lst))
+    (if (null? lst) '()
+        (if (pred (car lst))
+            (cons (car lst) (loop (cdr lst)))
+            (loop (cdr lst))))))
+
+(define (append-map f lst)
+  (apply append (map f lst)))