{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE GeneralisedNewtypeDeriving #-}

module Data.EnumSet.Wrapper (EnumSet (..)) where

import Control.DeepSeq
import Data.Data
import Data.IntSet (IntSet)
import GHC.Exts

newtype EnumSet k = EnumSet {unEnumSet :: IntSet}
  deriving
    ( Monoid,
      Semigroup,
      Data,
      IsList,
      Eq,
      Ord,
      Show,
      Read,
      NFData
    )