diff options
Diffstat (limited to 'compiler/utils/Bag.hs')
-rw-r--r-- | compiler/utils/Bag.hs | 8 |
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 |