set-cover-0.1: src/Math/SetCover/Queue.hs
module Math.SetCover.Queue (SetId(..), Methods(..), findMin) where
import Data.EnumMap (EnumMap)
import Data.EnumSet (EnumSet)
newtype SetId = SetId Int
instance Enum SetId where
fromEnum (SetId n) = n
toEnum = SetId
data Methods queue set =
Methods {
fromEnumMap :: EnumMap SetId set -> queue,
partition :: queue -> set -> (EnumSet SetId, queue),
difference :: queue -> EnumMap SetId set -> queue,
findMinValue :: queue -> Maybe (set, EnumSet SetId),
null :: queue -> Bool
}
findMin :: Methods queue set -> queue -> Maybe (EnumSet SetId)
findMin dict = fmap snd . findMinValue dict