summaryrefslogtreecommitdiff
path: root/ghc
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2006-02-03 17:46:27 +0000
committersimonpj@microsoft.com <unknown>2006-02-03 17:46:27 +0000
commit7985849b10db59b566d1864075b97b5d11d3a31d (patch)
treec0caf305995eb226c3023eba80adf1492b542957 /ghc
parent04fd714108aa00aeebe0b954259e51dac281c245 (diff)
downloadhaskell-7985849b10db59b566d1864075b97b5d11d3a31d.tar.gz
Add Bag.anyBag (analogous to List.any)
Diffstat (limited to 'ghc')
-rw-r--r--ghc/compiler/utils/Bag.lhs8
1 files changed, 7 insertions, 1 deletions
diff --git a/ghc/compiler/utils/Bag.lhs b/ghc/compiler/utils/Bag.lhs
index 4ee8b0fafb..b107f84a3a 100644
--- a/ghc/compiler/utils/Bag.lhs
+++ b/ghc/compiler/utils/Bag.lhs
@@ -11,7 +11,7 @@ module Bag (
mapBag,
elemBag,
filterBag, partitionBag, concatBag, foldBag, foldrBag, foldlBag,
- isEmptyBag, isSingletonBag, consBag, snocBag,
+ isEmptyBag, isSingletonBag, consBag, snocBag, anyBag,
listToBag, bagToList,
mapBagM, mapAndUnzipBagM
) where
@@ -75,6 +75,12 @@ filterBag pred (TwoBags b1 b2) = sat1 `unionBags` sat2
sat2 = filterBag pred b2
filterBag pred (ListBag vs) = listToBag (filter pred vs)
+anyBag :: (a -> Bool) -> Bag a -> Bool
+anyBag p EmptyBag = False
+anyBag p (UnitBag v) = p v
+anyBag p (TwoBags b1 b2) = anyBag p b1 || anyBag p b2
+anyBag p (ListBag xs) = any p xs
+
concatBag :: Bag (Bag a) -> Bag a
concatBag EmptyBag = EmptyBag
concatBag (UnitBag b) = b