HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

ModuleCabal-syntax-3.12.1.0Haskell2010

Distribution.Types.Flag

  • 3 types
  • 18 values

Package flag

2 declarations
datadata PackageFlag
#

A flag can represent a feature to be included, or a way of linking a target against its dependencies, or in fact whatever you can think of.

Instances8Eq, Data, Show, Generic, NFData, Binary, …

Flag name

3 declarations
newtypenewtype FlagName
#

A FlagName is the name of a user-defined configuration flag

Use mkFlagName and unFlagName to convert from/to a String.

This type is opaque since Cabal-2.0

Instances13Eq, Data, Ord, Read, Show, IsString, …

Flag assignment

13 declarations
newtypenewtype FlagAssignment
#

A FlagAssignment is a total or partial mapping of FlagNames to Bool flag values. It represents the flags chosen by the user or discovered during configuration. For example --flags=foo --flags=-bar becomes [("foo", True), ("bar", False)]

TODO: Why we record the multiplicity of the flag?

Instances13Eq, Ord, Read, Show, Generic, Semigroup, …
  • Eq FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • Ord FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • Read FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • Show FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • Generic FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • Semigroup FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • Monoid FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • NFData FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • Binary FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • Parsec FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
    Example1 expression
    simpleParsec "" :: Maybe FlagAssignmentJust (fromList [])
    Example1 expression
    simpleParsec "+foo -bar" :: Maybe FlagAssignmentJust (fromList [(FlagName "bar",(1,False)),(FlagName "foo",(1,True))])
    Example1 expression
    simpleParsec "-none -any" :: Maybe FlagAssignmentJust (fromList [(FlagName "any",(1,False)),(FlagName "none",(1,False))])
    Example1 expression
    simpleParsec "+foo -foo +foo +foo" :: Maybe FlagAssignmentJust (fromList [(FlagName "foo",(4,True))])
    Example1 expression
    simpleParsec "+foo -bar baz" :: Maybe FlagAssignmentNothing

    Issue #7279 was fixed in Cabal-3.8

    Example1 expression
    explicitEitherParsec (parsecCommaList parsec) "+foo , -bar" :: Either String [FlagAssignment]Right [fromList [(FlagName "foo",(1,True))],fromList [(FlagName "bar",(1,False))]]
    Example1 expression
    explicitEitherParsec (parsecCommaList parsecFlagAssignmentNonEmpty) "+foo , -bar" :: Either String [FlagAssignment]Right [fromList [(FlagName "foo",(1,True))],fromList [(FlagName "bar",(1,False))]]
    Example1 expression
    simpleParsec "+foo+foo" :: Maybe FlagAssignmentNothing
  • Pretty FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • Structured FlagAssignmentDefined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag
  • type Rep FlagAssignment = D1 ('MetaData "FlagAssignment" "Distribution.Types.Flag" "Cabal-syntax-3.12.1.0-3adc" 'True) (C1 ('MetaCons "FlagAssignment" 'PrefixI 'True) (S1 ('MetaSel ('Just "getFlagAssignment") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map FlagName (Int, Bool)))))Defined in Cabal-syntax-3.12.1.0 · Distribution.Types.Flag

Legacy formats