summary refs log tree commit diff
path: root/mew.scm
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2022-11-07 22:48:10 +0100
committerLeah Neukirchen <leah@vuxu.org>2022-11-07 22:48:10 +0100
commit8972b21868d475a6a54c9719e6dd8167d5827ce6 (patch)
tree7ae18d45dee0bf9a38ac7466c8bcd98beb82f474 /mew.scm
parent0afc4e827e4c4a7076b1d65fa9290c36a937d607 (diff)
downloadmew-8972b21868d475a6a54c9719e6dd8167d5827ce6.tar.gz
mew-8972b21868d475a6a54c9719e6dd8167d5827ce6.tar.xz
mew-8972b21868d475a6a54c9719e6dd8167d5827ce6.zip
add gpick
Diffstat (limited to 'mew.scm')
-rw-r--r--mew.scm12
1 files changed, 11 insertions, 1 deletions
diff --git a/mew.scm b/mew.scm
index 05af49b..a56d4ec 100644
--- a/mew.scm
+++ b/mew.scm
@@ -7,7 +7,7 @@
      empty? eof esc
      fin final for fun*
      gconcatenate gen generic-for-each genumerate get gfix giterate gmatch
-     group-by-accumulator gslice-when gsplit gwindow
+     gpick group-by-accumulator gslice-when gsplit gwindow
      inc inject into
      juxt
      keys
@@ -403,6 +403,16 @@
                   (loop))
                 v)))))))
 
+  (define (gpick f gen)
+    (lambda ()
+      (let loop ((item (gen)))
+        (if (eof-object? item)
+          item
+          (let ((v (f item)))
+            (if (eof-object? v)
+              (loop (gen))
+              v))))))
+
   (define (gwindow gen n)
     (let ((window #f))
       (lambda ()