From: simonpj@microsoft.com Date: Fri, 4 Dec 2009 15:50:55 +0000 (+0000) Subject: Add lengthBag to Bag (using in forthcoming patch) X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=a46db114c9f84bd5cdc7728bdaae24ab5b606692 Add lengthBag to Bag (using in forthcoming patch) --- diff --git a/compiler/utils/Bag.lhs b/compiler/utils/Bag.lhs index 481dedf..ebc44ac 100644 --- a/compiler/utils/Bag.lhs +++ b/compiler/utils/Bag.lhs @@ -11,7 +11,7 @@ module Bag ( emptyBag, unitBag, unionBags, unionManyBags, mapBag, - elemBag, + elemBag, lengthBag, filterBag, partitionBag, concatBag, foldBag, foldrBag, foldlBag, isEmptyBag, isSingletonBag, consBag, snocBag, anyBag, listToBag, bagToList, @@ -41,6 +41,12 @@ emptyBag = EmptyBag unitBag :: a -> Bag a unitBag = UnitBag +lengthBag :: Bag a -> Int +lengthBag EmptyBag = 0 +lengthBag (UnitBag {}) = 1 +lengthBag (TwoBags b1 b2) = lengthBag b1 + lengthBag b2 +lengthBag (ListBag xs) = length xs + elemBag :: Eq a => a -> Bag a -> Bool elemBag _ EmptyBag = False elemBag x (UnitBag y) = x == y