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

module Data.EnumMap.Wrapper (EnumMap (..)) where

import Control.DeepSeq
import Data.Data
import Data.Functor.Classes
import Data.IntMap.Lazy (IntMap)
import GHC.Exts

newtype EnumMap k a = EnumMap {unEnumMap :: IntMap a}
  deriving
    ( Monoid,
      Semigroup,
      Foldable,
      Traversable,
      NFData,
      Data,
      IsList,
      Eq,
      Eq1,
      Ord,
      Ord1,
      Functor,
      Show,
      Show1,
      Read,
      Read1
    )