PRIVATE>
: purge-cache ( cache -- )
- [ assoc>> ] [ max-age>> ] bi '[
- [
+ [ assoc>> ] [ max-age>> ] bi V{ } clone [
+ '[
nip dup age>> 1 + [ >>age ] keep
- _ < [ drop t ] [ dispose, f ] if
+ _ < [ drop t ] [ _ dispose-to f ] if
] assoc-filter! drop
- ] { } make [ last rethrow ] unless-empty ;
+ ] keep [ last rethrow ] unless-empty ;
bi
] unless-disposed ;
-: dispose, ( obj -- )
- [ dispose ] curry [ , ] recover ; inline
+: dispose-to ( obj accum -- )
+ [ dispose ] [ push ] bi-curry* recover ; inline
: dispose-each ( seq -- )
- [ [ dispose, ] each ] { } make
+ V{ } clone [ [ dispose-to ] curry each ] keep
[ last rethrow ] unless-empty ;
: with-disposal ( object quot -- )