summary refs log tree commit diff
path: root/mew.scm
diff options
context:
space:
mode:
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 f95c0b1..259f51c 100644
--- a/mew.scm
+++ b/mew.scm
@@ -14,7 +14,7 @@
      keys
      len lines loc
      mod
-     negate
+     negate nth-accumulator
      odometer one-of op op*
      per prn proj puts
      rand range rep
@@ -936,6 +936,16 @@
                  (hash-table-values items)
                  (hash-table-update!/default items (f x) identity x)))))))
 
+  (define (nth-accumulator n)
+    (let ((n n) (state (void)))
+      (lambda (x)
+        (if (eof-object? x) 
+           state
+           (begin
+             (when (zero? n)
+               (set! state x))
+             (set! n (dec n)))))))
+
   (define (generator-xfold f seed . gs)
     (define (inner-xfold seed)
       (let ((vs (map (lambda (g) (g)) gs)))