import Data.Bits
import Data.Int
import qualified Data.IntSet as IntSet
+import Data.Monoid (Monoid(..))
import Data.Typeable
{-
type Mask = Int
type Key = Int
+instance Ord a => Monoid (IntMap a) where
+ mempty = empty
+ mappend = union
+ mconcat = unions
+
#if __GLASGOW_HASKELL__
{--------------------------------------------------------------------
import Data.Int
import qualified Data.List as List
+import Data.Monoid (Monoid(..))
import Data.Typeable
{-
type Prefix = Int
type Mask = Int
+instance Monoid IntSet where
+ mempty = empty
+ mappend = union
+ mconcat = unions
+
#if __GLASGOW_HASKELL__
{--------------------------------------------------------------------
import Prelude hiding (lookup,map,filter,foldr,foldl,null)
import qualified Data.Set as Set
import qualified Data.List as List
+import Data.Monoid (Monoid(..))
import Data.Typeable
{-
type Size = Int
+instance (Ord k) => Monoid (Map k v) where
+ mempty = empty
+ mappend = union
+ mconcat = unions
+
#if __GLASGOW_HASKELL__
{--------------------------------------------------------------------
) where
import Prelude
-import Data.Map ( Map )
-import qualified Data.Map as Map hiding ( Map )
-import Data.IntMap ( IntMap )
-import qualified Data.IntMap as IntMap hiding ( IntMap )
-import Data.Set ( Set )
-import qualified Data.Set as Set hiding ( Set )
-import Data.IntSet ( IntSet )
-import qualified Data.IntSet as IntSet hiding ( IntSet )
-- ---------------------------------------------------------------------------
-- | The monoid class.
instance Num a => Monoid (Product a) where
mempty = Product 1
Product x `mappend` Product y = Product (x * y)
-
-instance (Ord k) => Monoid (Map k v) where
- mempty = Map.empty
- mappend = Map.union
- mconcat = Map.unions
-
-instance Ord a => Monoid (IntMap a) where
- mempty = IntMap.empty
- mappend = IntMap.union
- mconcat = IntMap.unions
-
-instance Ord a => Monoid (Set a) where
- mempty = Set.empty
- mappend = Set.union
- mconcat = Set.unions
-
-instance Monoid IntSet where
- mempty = IntSet.empty
- mappend = IntSet.union
- mconcat = IntSet.unions
import Prelude hiding (filter,foldr,null,map)
import qualified Data.List as List
+import Data.Monoid (Monoid(..))
import Data.Typeable
{-
type Size = Int
+instance Ord a => Monoid (Set a) where
+ mempty = empty
+ mappend = union
+ mconcat = unions
+
#if __GLASGOW_HASKELL__
{--------------------------------------------------------------------