diff --git a/imperative/bag.rkt b/imperative/bag.rkt index 3d84fd6..451b13a 100644 --- a/imperative/bag.rkt +++ b/imperative/bag.rkt @@ -12,6 +12,8 @@ bag-key-count in-bag in-bag/count + for/bag/count + for/bag set->bag bag->set) @@ -59,6 +61,9 @@ (define-syntax-rule (in-bag piece ...) (in-hash-keys piece ...)) (define-syntax-rule (in-bag/count piece ...) (in-hash piece ...)) +(define-syntax-rule (for/bag/count iters expr ...) (for/hash iters expr ...)) +(define-syntax-rule (for/bag iters expr ...) (for/bag/count iters (values (begin expr ...) 1))) + (define (set->bag s [count 1]) (for/hash [(e (in-set s))] (values e count)))