summaryrefslogtreecommitdiff
path: root/compiler/utils/Bag.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/utils/Bag.hs')
-rw-r--r--compiler/utils/Bag.hs8
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler/utils/Bag.hs b/compiler/utils/Bag.hs
index 5fd4ba3b83..57711629c9 100644
--- a/compiler/utils/Bag.hs
+++ b/compiler/utils/Bag.hs
@@ -16,7 +16,7 @@ module Bag (
elemBag, lengthBag,
filterBag, partitionBag, partitionBagWith,
concatBag, catBagMaybes, foldBag, foldrBag, foldlBag,
- isEmptyBag, isSingletonBag, consBag, snocBag, anyBag,
+ isEmptyBag, isSingletonBag, consBag, snocBag, anyBag, allBag,
listToBag, bagToList, mapAccumBagL,
concatMapBag, mapMaybeBag,
foldrBagM, foldlBagM, mapBagM, mapBagM_,
@@ -110,6 +110,12 @@ filterBagM pred (ListBag vs) = do
sat <- filterM pred vs
return (listToBag sat)
+allBag :: (a -> Bool) -> Bag a -> Bool
+allBag _ EmptyBag = True
+allBag p (UnitBag v) = p v
+allBag p (TwoBags b1 b2) = allBag p b1 && allBag p b2
+allBag p (ListBag xs) = all p xs
+
anyBag :: (a -> Bool) -> Bag a -> Bool
anyBag _ EmptyBag = False
anyBag p (UnitBag v) = p v