{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Data.CRF.Chain2.Generic.FeatMap.Map ( FeatMap (..) ) where import Data.Binary (Binary) import qualified Data.Map as M import Data.CRF.Chain2.Generic.Internal import qualified Data.CRF.Chain2.Generic.FeatMap as C newtype FeatMap f = FeatMap { unFeatMap :: M.Map f FeatIx } deriving (Show, Eq, Ord, Binary) instance Ord f => C.FeatMap FeatMap f where featIndex x (FeatMap m) = M.lookup x m mkFeatMap = FeatMap . M.fromList