-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | An efficient data type for sets of flags -- @package data-flagset @version 1.0.0.0 -- |
-- import qualified Data.FlagSet as FlagSet -- import Data.FlagSet (FlagSet) ---- -- The API is basically the same as that of Data.Set from the -- containers package. -- -- The functions fromList and member also have aliases that -- can be used unqualified: -- --
-- import Data.FlagSet (flags, hasFlag) ---- --
-- import qualified Data.FlagSet as FlagSet -- import Data.FlagSet (FlagSet, flags, hasFlag) -- -- data WeekDay = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday -- deriving (Eq, Show, Enum, Bounded) -- -- workDays = flags [Monday .. Friday] -- weekEndDays = flags [Saturday, Sunday] -- allDays = FlagSet.full -- -- worksOnTheWeekEnd :: FlagSet WeekDay -> Bool -- worksOnTheWeekEnd = not . FlagSet.null . FlagSet.intersection weekEndDays -- -- worksOnSunday :: FlagSet WeekDay -> Bool -- worksOnSunday = hasFlag Sunday -- -- workDayPay :: Rational -- workDayPay = ... -- weekEndDayPay :: Rational -- weekEndDayPay = ... -- -- pay :: FlagSet WeekDay -> Rational -- pay daysWorking = workDayPay * countDays workDays + weekEndDayPay * countDays weekEndDays -- where -- countDays = fromIntegral . FlagSet.size . FlagSet.intersection daysWorking --module Data.FlagSet -- | A set of flags. -- -- For most functions operating on flag sets, there must be an -- Enum instance for a. Some functions also require -- Bounded. -- -- You must ensure that fromEnum only returns values in the range -- [0 .. 31], otherwise an error can occur. -- -- In the Monoid instance, mempty is empty and -- mappend/<> is union. data FlagSet a -- | Create a flag set from a list of flags. Input list can contain -- duplicates. fromList :: Enum a => [a] -> FlagSet a -- | Alias for fromList that can be imported unqualified. flags :: Enum a => [a] -> FlagSet a -- | The empty flag set. empty :: FlagSet a -- | A flag set containing a single value. singleton :: Enum a => a -> FlagSet a -- | The flag set that contains every value. full :: (Enum a, Bounded a) => FlagSet a -- | Insert a value into a flag set. insert :: Enum a => a -> FlagSet a -> FlagSet a -- | Remove a value from a flag set. delete :: Enum a => a -> FlagSet a -> FlagSet a -- | The union of two flag sets. union :: FlagSet a -> FlagSet a -> FlagSet a -- | The union of multiple flag sets. unions :: [FlagSet a] -> FlagSet a -- | The difference of two flag sets. difference :: FlagSet a -> FlagSet a -> FlagSet a -- | The intersection of two flag sets. intersection :: FlagSet a -> FlagSet a -> FlagSet a -- | Test whether a flag set contains a value. member :: Enum a => a -> FlagSet a -> Bool -- | Alias for member that can be imported unqualified. hasFlag :: Enum a => a -> FlagSet a -> Bool -- | Test whether a flag set is empty. null :: FlagSet a -> Bool -- | Convert a flag set to a list of values. The values will be ordered -- according to the order defined by fromEnum and there will not -- be any duplicates. toList :: Enum a => FlagSet a -> [a] -- | The number of values in a flag set. size :: FlagSet a -> Int instance Typeable FlagSet instance Data a => Data (FlagSet a) instance Monoid (FlagSet a) instance (Show a, Enum a) => Show (FlagSet a) instance Ord (FlagSet a) instance Eq (FlagSet a)