{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface Bag where import Outputable(Outputable) data Bag a bagToList :: Bag a -> [a] emptyBag :: Bag a filterBag :: (a -> Bool) -> Bag a -> Bag a isEmptyBag :: Bag a -> Bool listToBag :: [a] -> Bag a partitionBag :: (a -> Bool) -> Bag a -> (Bag a, Bag a) snocBag :: Bag a -> a -> Bag a unionBags :: Bag a -> Bag a -> Bag a unionManyBags :: [Bag a] -> Bag a unitBag :: a -> Bag a instance Outputable a => Outputable (Bag a)