diff options
Diffstat (limited to 'mew.scm')
-rw-r--r-- | mew.scm | 12 |
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))) |