Cabal-2.4.0.0: A framework for packaging Haskell software

CopyrightIsaac Jones 2003-2004
Duncan Coutts 2007
LicenseBSD3
Maintainercabal-devel@haskell.org
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Distribution.Simple.Flag

Description

Defines the Flag type and it's Monoid instance, see http://www.haskell.org/pipermail/cabal-devel/2007-December/001509.html for an explanation.

Split off from Distribution.Simple.Setup to break import cycles.

Synopsis

Documentation

data Flag a #

All flags are monoids, they come in two flavours:

  1. list flags eg
--ghc-option=foo --ghc-option=bar

gives us all the values ["foo", "bar"]

  1. singular value flags, eg:
--enable-foo --disable-foo

gives us Just False So this Flag type is for the latter singular kind of flag. Its monoid instance gives us the behaviour where it starts out as NoFlag and later flags override earlier ones.

Constructors

Flag a 
NoFlag 
Instances
Functor Flag # 
Instance details

Defined in Distribution.Simple.Flag

Methods

fmap :: (a -> b) -> Flag a -> Flag b #

(<$) :: a -> Flag b -> Flag a #

Applicative Flag # 
Instance details

Defined in Distribution.Simple.Flag

Methods

pure :: a -> Flag a #

(<*>) :: Flag (a -> b) -> Flag a -> Flag b #

liftA2 :: (a -> b -> c) -> Flag a -> Flag b -> Flag c #

(*>) :: Flag a -> Flag b -> Flag b #

(<*) :: Flag a -> Flag b -> Flag a #

Bounded a => Bounded (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

minBound :: Flag a #

maxBound :: Flag a #

Enum a => Enum (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

succ :: Flag a -> Flag a #

pred :: Flag a -> Flag a #

toEnum :: Int -> Flag a #

fromEnum :: Flag a -> Int #

enumFrom :: Flag a -> [Flag a] #

enumFromThen :: Flag a -> Flag a -> [Flag a] #

enumFromTo :: Flag a -> Flag a -> [Flag a] #

enumFromThenTo :: Flag a -> Flag a -> Flag a -> [Flag a] #

Eq a => Eq (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

(==) :: Flag a -> Flag a -> Bool #

(/=) :: Flag a -> Flag a -> Bool #

Read a => Read (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Show a => Show (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

showsPrec :: Int -> Flag a -> ShowS #

show :: Flag a -> String #

showList :: [Flag a] -> ShowS #

Generic (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Associated Types

type Rep (Flag a) :: * -> * #

Methods

from :: Flag a -> Rep (Flag a) x #

to :: Rep (Flag a) x -> Flag a #

Semigroup (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

(<>) :: Flag a -> Flag a -> Flag a #

sconcat :: NonEmpty (Flag a) -> Flag a #

stimes :: Integral b => b -> Flag a -> Flag a #

Monoid (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

mempty :: Flag a #

mappend :: Flag a -> Flag a -> Flag a #

mconcat :: [Flag a] -> Flag a #

Binary a => Binary (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

put :: Flag a -> Put #

get :: Get (Flag a) #

putList :: [Flag a] -> Put #

type Rep (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

type Rep (Flag a) = D1 (MetaData "Flag" "Distribution.Simple.Flag" "Cabal-2.4.0.0-8En9aDn0HOVDVTKXJjqCyH" False) (C1 (MetaCons "Flag" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)) :+: C1 (MetaCons "NoFlag" PrefixI False) (U1 :: * -> *))

toFlag :: a -> Flag a #

fromFlagOrDefault :: a -> Flag a -> a #

flagToList :: Flag a -> [a] #

class BooleanFlag a where #

Types that represent boolean flags.

Minimal complete definition

asBool

Methods

asBool :: a -> Bool #

Instances
BooleanFlag Bool # 
Instance details

Defined in Distribution.Simple.Flag

Methods

asBool :: Bool -> Bool #