diff options
Diffstat (limited to 'fibers/stack.scm')
| -rw-r--r-- | fibers/stack.scm | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fibers/stack.scm b/fibers/stack.scm index cd2c1c6..681a3b1 100644 --- a/fibers/stack.scm +++ b/fibers/stack.scm @@ -24,7 +24,8 @@ stack-push! stack-push-list! stack-pop! - stack-pop-all!)) + stack-pop-all! + stack-filter!)) (define (make-empty-stack) (make-atomic-box '())) @@ -59,3 +60,7 @@ (define (stack-pop-all! sbox) (atomic-box-swap! sbox '())) + +(define (stack-filter! sbox pred) + (update! sbox (lambda (stack) + (values (filter pred stack) #f)))) |
