X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Futils%2FBag.lhs;h=ed9a5407fbfd58c17085a97e1556e4a7a63c4f8f;hb=778b2c6bdbabf2c9f394f0ca2b76b55a7123aa5f;hp=546ad2fbc34ad81271b1320835a1f9e8814a6543;hpb=9dd6e1c216993624a2cd74b62ca0f0569c02c26b;p=ghc-hetmet.git diff --git a/ghc/compiler/utils/Bag.lhs b/ghc/compiler/utils/Bag.lhs index 546ad2f..ed9a540 100644 --- a/ghc/compiler/utils/Bag.lhs +++ b/ghc/compiler/utils/Bag.lhs @@ -1,5 +1,5 @@ % -% (c) The GRASP/AQUA Project, Glasgow University, 1992-1996 +% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 % \section[Bags]{@Bag@: an unordered collection with duplicates} @@ -10,7 +10,7 @@ module Bag ( emptyBag, unitBag, unionBags, unionManyBags, mapBag, elemBag, - filterBag, partitionBag, concatBag, foldBag, foldrBag, + filterBag, partitionBag, concatBag, foldBag, foldrBag, foldlBag, isEmptyBag, consBag, snocBag, listToBag, bagToList ) where @@ -130,6 +130,16 @@ foldrBag k z (TwoBags b1 b2) = foldrBag k (foldrBag k z b2) b1 foldrBag k z (ListBag xs) = foldr k z xs foldrBag k z (ListOfBags bs) = foldr (\b r -> foldrBag k r b) z bs +foldlBag :: (r -> a -> r) -> r + -> Bag a + -> r + +foldlBag k z EmptyBag = z +foldlBag k z (UnitBag x) = k z x +foldlBag k z (TwoBags b1 b2) = foldlBag k (foldlBag k z b1) b2 +foldlBag k z (ListBag xs) = foldl k z xs +foldlBag k z (ListOfBags bs) = foldl (\r b -> foldlBag k r b) z bs + mapBag :: (a -> b) -> Bag a -> Bag b mapBag f EmptyBag = EmptyBag