summaryrefslogtreecommitdiff
path: root/fibers/stack.scm
diff options
context:
space:
mode:
Diffstat (limited to 'fibers/stack.scm')
-rw-r--r--fibers/stack.scm7
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))))