Cabal-3.10.3.0: A framework for packaging Haskell software
CopyrightIsaac Jones 2003-2004
Duncan Coutts 2007
LicenseBSD3
Maintainercabal-devel@haskell.org
Portabilityportable
Safe HaskellSafe-Inferred
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 Source #

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

Instances details
Applicative Flag Source # 
Instance details

Defined in Distribution.Simple.Flag

Methods

pure :: a -> Flag a Source #

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

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

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

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

Functor Flag Source # 
Instance details

Defined in Distribution.Simple.Flag

Methods

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

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

Structured a => Structured (Flag a) Source # 
Instance details

Defined in Distribution.Simple.Flag

Methods

structure :: Proxy (Flag a) -> Structure Source #

structureHash' :: Tagged (Flag a) MD5

Monoid (Flag a) Source # 
Instance details

Defined in Distribution.Simple.Flag

Methods

mempty :: Flag a Source #

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

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

Semigroup (Flag a) Source # 
Instance details

Defined in Distribution.Simple.Flag

Methods

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

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

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

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

Defined in Distribution.Simple.Flag

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

Defined in Distribution.Simple.Flag

Methods

succ :: Flag a -> Flag a Source #

pred :: Flag a -> Flag a Source #

toEnum :: Int -> Flag a Source #

fromEnum :: Flag a -> Int Source #

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

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

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

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

Generic (Flag a) Source # 
Instance details

Defined in Distribution.Simple.Flag

Associated Types

type Rep (Flag a) 
Instance details

Defined in Distribution.Simple.Flag

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

Methods

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

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

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

Defined in Distribution.Simple.Flag

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

Defined in Distribution.Simple.Flag

Methods

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

show :: Flag a -> String Source #

showList :: [Flag a] -> ShowS Source #

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

Defined in Distribution.Simple.Flag

Methods

put :: Flag a -> Put #

get :: Get (Flag a) #

putList :: [Flag a] -> Put #

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

Defined in Distribution.Simple.Flag

Methods

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

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

type Rep (Flag a) Source # 
Instance details

Defined in Distribution.Simple.Flag

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

toFlag :: a -> Flag a Source #

flagElim :: b -> (a -> b) -> Flag a -> b Source #

Since: Cabal-3.4.0.0

flagToList :: Flag a -> [a] Source #

class BooleanFlag a where Source #

Types that represent boolean flags.

Methods

asBool :: a -> Bool Source #

Instances

Instances details
BooleanFlag Bool Source # 
Instance details

Defined in Distribution.Simple.Flag

Methods

asBool :: Bool -> Bool Source #