cabal-install-3.10.2.1: The command-line interface for Cabal and Hackage.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Distribution.Client.Compat.Prelude

Description

This module does two things:

  • Acts as a compatibility layer, like base-compat.
  • Provides commonly used imports.

This module is a superset of Distribution.Compat.Prelude (which this module re-exports)

Synopsis

Documentation

prettyShow :: Pretty a => a -> String #

data Verbosity #

Instances

Instances details
Parsec Verbosity

Parser verbosity

>>> explicitEitherParsec parsecVerbosity "normal"
Right (Verbosity {vLevel = Normal, vFlags = fromList [], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap  "
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap +markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal +nowrap +markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap+markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "deafening+nowrap+stdout+stderr+callsite+callstack"
Right (Verbosity {vLevel = Deafening, vFlags = fromList [VCallStack,VCallSite,VNoWrap,VStderr], vQuiet = False})

Note: this parser will eat trailing spaces.

Instance details

Defined in Distribution.Verbosity

Methods

parsec :: CabalParsing m => m Verbosity #

Pretty Verbosity 
Instance details

Defined in Distribution.Verbosity

Structured Verbosity 
Instance details

Defined in Distribution.Verbosity

Bounded Verbosity 
Instance details

Defined in Distribution.Verbosity

Enum Verbosity 
Instance details

Defined in Distribution.Verbosity

Generic Verbosity 
Instance details

Defined in Distribution.Verbosity

Associated Types

type Rep Verbosity :: Type -> Type #

Read Verbosity 
Instance details

Defined in Distribution.Verbosity

Show Verbosity 
Instance details

Defined in Distribution.Verbosity

Binary Verbosity 
Instance details

Defined in Distribution.Verbosity

Eq Verbosity 
Instance details

Defined in Distribution.Verbosity

Ord Verbosity 
Instance details

Defined in Distribution.Verbosity

type Rep Verbosity 
Instance details

Defined in Distribution.Verbosity

type Rep Verbosity = D1 ('MetaData "Verbosity" "Distribution.Verbosity" "Cabal-3.10.2.1-GyzoJJgKHqN4rPN6ewqdAH" 'False) (C1 ('MetaCons "Verbosity" 'PrefixI 'True) (S1 ('MetaSel ('Just "vLevel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 VerbosityLevel) :*: (S1 ('MetaSel ('Just "vFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set VerbosityFlag)) :*: S1 ('MetaSel ('Just "vQuiet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))

explicitEitherParsec :: ParsecParser a -> String -> Either String a #

Parse a String with given ParsecParser. Trailing whitespace is accepted.

simpleParsec :: Parsec a => String -> Maybe a #

Parse a String with lexemeParsec.

class Parsec a where #

Class for parsing with parsec. Mainly used for .cabal file fields.

For parsing .cabal like file structure, see Distribution.Fields.

Methods

parsec :: CabalParsing m => m a #

Instances

Instances details
Parsec HaddockTarget 
Instance details

Defined in Distribution.Simple.Setup

Parsec TestShowDetails 
Instance details

Defined in Distribution.Simple.Setup

Parsec Verbosity

Parser verbosity

>>> explicitEitherParsec parsecVerbosity "normal"
Right (Verbosity {vLevel = Normal, vFlags = fromList [], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap  "
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap +markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal +nowrap +markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "normal+nowrap+markoutput"
Right (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})
>>> explicitEitherParsec parsecVerbosity "deafening+nowrap+stdout+stderr+callsite+callstack"
Right (Verbosity {vLevel = Deafening, vFlags = fromList [VCallStack,VCallSite,VNoWrap,VStderr], vQuiet = False})

Note: this parser will eat trailing spaces.

Instance details

Defined in Distribution.Verbosity

Methods

parsec :: CabalParsing m => m Verbosity #

Parsec OpenModule
>>> eitherParsec "Includes2-0.1.0.0-inplace-mysql:Database.MySQL" :: Either String OpenModule
Right (OpenModule (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "Includes2-0.1.0.0-inplace-mysql"})) (ModuleName "Database.MySQL"))
Instance details

Defined in Distribution.Backpack

Methods

parsec :: CabalParsing m => m OpenModule #

Parsec OpenUnitId
>>> eitherParsec "foobar" :: Either String OpenUnitId
Right (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "foobar"}))
>>> eitherParsec "foo[Str=text-1.2.3:Data.Text.Text]" :: Either String OpenUnitId
Right (IndefFullUnitId (ComponentId "foo") (fromList [(ModuleName "Str",OpenModule (DefiniteUnitId (DefUnitId {unDefUnitId = UnitId "text-1.2.3"})) (ModuleName "Data.Text.Text"))]))
Instance details

Defined in Distribution.Backpack

Methods

parsec :: CabalParsing m => m OpenUnitId #

Parsec AbiTag 
Instance details

Defined in Distribution.Compiler

Methods

parsec :: CabalParsing m => m AbiTag #

Parsec CompilerFlavor 
Instance details

Defined in Distribution.Compiler

Parsec CompilerId 
Instance details

Defined in Distribution.Compiler

Methods

parsec :: CabalParsing m => m CompilerId #

Parsec FilePathNT 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m FilePathNT #

Parsec SpecLicense 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m SpecLicense #

Parsec SpecVersion 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m SpecVersion #

Parsec TestedWith 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m TestedWith #

Parsec Token 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m Token #

Parsec Token' 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m Token' #

Parsec License 
Instance details

Defined in Distribution.License

Methods

parsec :: CabalParsing m => m License #

Parsec ModuleName 
Instance details

Defined in Distribution.ModuleName

Methods

parsec :: CabalParsing m => m ModuleName #

Parsec CompatFilePath 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Parsec CompatLicenseFile 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Parsec License
>>> eitherParsec "BSD-3-Clause AND MIT" :: Either String License
Right (License (EAnd (ELicense (ELicenseId BSD_3_Clause) Nothing) (ELicense (ELicenseId MIT) Nothing)))
>>> eitherParsec "NONE" :: Either String License
Right NONE
Instance details

Defined in Distribution.SPDX.License

Methods

parsec :: CabalParsing m => m License #

Parsec LicenseExceptionId 
Instance details

Defined in Distribution.SPDX.LicenseExceptionId

Parsec LicenseExpression 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Parsec SimpleLicenseExpression 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Parsec LicenseId
>>> eitherParsec "BSD-3-Clause" :: Either String LicenseId
Right BSD_3_Clause
>>> eitherParsec "BSD3" :: Either String LicenseId
Left "...Unknown SPDX license identifier: 'BSD3' Do you mean BSD-3-Clause?"
Instance details

Defined in Distribution.SPDX.LicenseId

Methods

parsec :: CabalParsing m => m LicenseId #

Parsec LicenseRef 
Instance details

Defined in Distribution.SPDX.LicenseReference

Methods

parsec :: CabalParsing m => m LicenseRef #

Parsec Arch 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m Arch #

Parsec OS 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m OS #

Parsec Platform 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m Platform #

Parsec AbiDependency 
Instance details

Defined in Distribution.Types.AbiDependency

Parsec AbiHash 
Instance details

Defined in Distribution.Types.AbiHash

Methods

parsec :: CabalParsing m => m AbiHash #

Parsec BenchmarkType 
Instance details

Defined in Distribution.Types.BenchmarkType

Parsec BuildType 
Instance details

Defined in Distribution.Types.BuildType

Methods

parsec :: CabalParsing m => m BuildType #

Parsec ComponentId 
Instance details

Defined in Distribution.Types.ComponentId

Methods

parsec :: CabalParsing m => m ComponentId #

Parsec ComponentName 
Instance details

Defined in Distribution.Types.ComponentName

Parsec Dependency
>>> simpleParsec "mylib:sub" :: Maybe Dependency
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub") :| [])))
>>> simpleParsec "mylib:{sub1,sub2}" :: Maybe Dependency
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")])))
>>> simpleParsec "mylib:{ sub1 , sub2 }" :: Maybe Dependency
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")])))
>>> simpleParsec "mylib:{ sub1 , sub2 } ^>= 42" :: Maybe Dependency
Just (Dependency (PackageName "mylib") (MajorBoundVersion (mkVersion [42])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")])))
>>> simpleParsec "mylib:{ } ^>= 42" :: Maybe Dependency
Nothing
>>> traverse_ print (map simpleParsec ["mylib:mylib", "mylib:{mylib}", "mylib:{mylib,sublib}" ] :: [Maybe Dependency])
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [])))
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [])))
Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [LSubLibName (UnqualComponentName "sublib")])))

Spaces around colon are not allowed:

>>> map simpleParsec ["mylib: sub", "mylib :sub", "mylib: {sub1,sub2}", "mylib :{sub1,sub2}"] :: [Maybe Dependency]
[Nothing,Nothing,Nothing,Nothing]

Sublibrary syntax is accepted since cabal-version: 3.0

>>> map (`simpleParsec'` "mylib:sub") [CabalSpecV2_4, CabalSpecV3_0] :: [Maybe Dependency]
[Nothing,Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub") :| [])))]
Instance details

Defined in Distribution.Types.Dependency

Methods

parsec :: CabalParsing m => m Dependency #

Parsec ExeDependency

Examples

>>> simpleParsec "happy:happy" :: Maybe ExeDependency
Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [0])))
>>> simpleParsec "happy:happy >= 1.19.12" :: Maybe ExeDependency
Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [1,19,12])))
>>> simpleParsec "happy:happy>=1.19.12" :: Maybe ExeDependency
Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [1,19,12])))
>>> simpleParsec "happy : happy >= 1.19.12" :: Maybe ExeDependency
Nothing
>>> simpleParsec "happy: happy >= 1.19.12" :: Maybe ExeDependency
Nothing
>>> simpleParsec "happy :happy >= 1.19.12" :: Maybe ExeDependency
Nothing
Instance details

Defined in Distribution.Types.ExeDependency

Parsec ExecutableScope 
Instance details

Defined in Distribution.Types.ExecutableScope

Parsec ExposedModule 
Instance details

Defined in Distribution.Types.ExposedModule

Parsec FlagAssignment
>>> simpleParsec "" :: Maybe FlagAssignment
Just (fromList [])
>>> simpleParsec "+foo -bar" :: Maybe FlagAssignment
Just (fromList [(FlagName "bar",(1,False)),(FlagName "foo",(1,True))])
>>> simpleParsec "-none -any" :: Maybe FlagAssignment
Just (fromList [(FlagName "any",(1,False)),(FlagName "none",(1,False))])
>>> simpleParsec "+foo -foo +foo +foo" :: Maybe FlagAssignment
Just (fromList [(FlagName "foo",(4,True))])
>>> simpleParsec "+foo -bar baz" :: Maybe FlagAssignment
Nothing

Issue #7279 was fixed in Cabal-3.8

>>> explicitEitherParsec (parsecCommaList parsec) "+foo , -bar" :: Either String [FlagAssignment]
Right [fromList [(FlagName "foo",(1,True))],fromList [(FlagName "bar",(1,False))]]
>>> explicitEitherParsec (parsecCommaList parsecFlagAssignmentNonEmpty) "+foo , -bar" :: Either String [FlagAssignment]
Right [fromList [(FlagName "foo",(1,True))],fromList [(FlagName "bar",(1,False))]]
>>> simpleParsec "+foo+foo" :: Maybe FlagAssignment
Nothing

Since: Cabal-syntax-3.4.0.0

Instance details

Defined in Distribution.Types.Flag

Parsec FlagName 
Instance details

Defined in Distribution.Types.Flag

Methods

parsec :: CabalParsing m => m FlagName #

Parsec LibVersionInfo 
Instance details

Defined in Distribution.Types.ForeignLib

Parsec ForeignLibOption 
Instance details

Defined in Distribution.Types.ForeignLibOption

Parsec ForeignLibType 
Instance details

Defined in Distribution.Types.ForeignLibType

Parsec IncludeRenaming 
Instance details

Defined in Distribution.Types.IncludeRenaming

Parsec LegacyExeDependency 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Parsec LibraryVisibility 
Instance details

Defined in Distribution.Types.LibraryVisibility

Parsec Mixin
>>> simpleParsec "mylib" :: Maybe Mixin
Just (Mixin {mixinPackageName = PackageName "mylib", mixinLibraryName = LMainLibName, mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})
>>> simpleParsec "thatlib:sublib" :: Maybe Mixin
Just (Mixin {mixinPackageName = PackageName "thatlib", mixinLibraryName = LSubLibName (UnqualComponentName "sublib"), mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})
>>> simpleParsec "thatlib:thatlib" :: Maybe Mixin
Just (Mixin {mixinPackageName = PackageName "thatlib", mixinLibraryName = LMainLibName, mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})

Sublibrary syntax is accepted since cabal-version: 3.4.

>>> map (`simpleParsec'` "mylib:sub") [CabalSpecV3_0, CabalSpecV3_4] :: [Maybe Mixin]
[Nothing,Just (Mixin {mixinPackageName = PackageName "mylib", mixinLibraryName = LSubLibName (UnqualComponentName "sub"), mixinIncludeRenaming = IncludeRenaming {includeProvidesRn = DefaultRenaming, includeRequiresRn = DefaultRenaming}})]
Instance details

Defined in Distribution.Types.Mixin

Methods

parsec :: CabalParsing m => m Mixin #

Parsec Module 
Instance details

Defined in Distribution.Types.Module

Methods

parsec :: CabalParsing m => m Module #

Parsec ModuleReexport 
Instance details

Defined in Distribution.Types.ModuleReexport

Parsec ModuleRenaming 
Instance details

Defined in Distribution.Types.ModuleRenaming

Parsec MungedPackageId
>>> simpleParsec "foo-bar-0" :: Maybe MungedPackageId
Just (MungedPackageId {mungedName = MungedPackageName (PackageName "foo-bar") LMainLibName, mungedVersion = mkVersion [0]})
>>> simpleParsec "foo-bar" :: Maybe MungedPackageId
Just (MungedPackageId {mungedName = MungedPackageName (PackageName "foo-bar") LMainLibName, mungedVersion = mkVersion []})
>>> simpleParsec "z-foo-bar-z-baz-0" :: Maybe MungedPackageId
Just (MungedPackageId {mungedName = MungedPackageName (PackageName "foo-bar") (LSubLibName (UnqualComponentName "baz")), mungedVersion = mkVersion [0]})
>>> simpleParsec "foo-bar-0-0" :: Maybe MungedPackageId
Nothing
>>> simpleParsec "foo-bar.0" :: Maybe MungedPackageId
Nothing
>>> simpleParsec "foo-bar.4-2" :: Maybe MungedPackageId
Nothing
Instance details

Defined in Distribution.Types.MungedPackageId

Parsec MungedPackageName
>>> simpleParsec "servant" :: Maybe MungedPackageName
Just (MungedPackageName (PackageName "servant") LMainLibName)
>>> simpleParsec "z-servant-z-lackey" :: Maybe MungedPackageName
Just (MungedPackageName (PackageName "servant") (LSubLibName (UnqualComponentName "lackey")))
>>> simpleParsec "z-servant-zz" :: Maybe MungedPackageName
Just (MungedPackageName (PackageName "z-servant-zz") LMainLibName)
Instance details

Defined in Distribution.Types.MungedPackageName

Parsec PackageIdentifier
>>> simpleParsec "foo-bar-0" :: Maybe PackageIdentifier
Just (PackageIdentifier {pkgName = PackageName "foo-bar", pkgVersion = mkVersion [0]})
>>> simpleParsec "foo-bar" :: Maybe PackageIdentifier
Just (PackageIdentifier {pkgName = PackageName "foo-bar", pkgVersion = mkVersion []})

Note: Stricter than Text instance

>>> simpleParsec "foo-bar-0-0" :: Maybe PackageIdentifier
Nothing
>>> simpleParsec "foo-bar.0" :: Maybe PackageIdentifier
Nothing
>>> simpleParsec "foo-bar.4-2" :: Maybe PackageIdentifier
Nothing
>>> simpleParsec "1.2.3" :: Maybe PackageIdentifier
Nothing
Instance details

Defined in Distribution.Types.PackageId

Parsec PackageName 
Instance details

Defined in Distribution.Types.PackageName

Methods

parsec :: CabalParsing m => m PackageName #

Parsec PackageVersionConstraint
>>> simpleParsec "foo" :: Maybe PackageVersionConstraint
Just (PackageVersionConstraint (PackageName "foo") (OrLaterVersion (mkVersion [0])))
>>> simpleParsec "foo >=2.0" :: Maybe PackageVersionConstraint
Just (PackageVersionConstraint (PackageName "foo") (OrLaterVersion (mkVersion [2,0])))
>>> simpleParsec "foo-2.0" :: Maybe PackageVersionConstraint
Just (PackageVersionConstraint (PackageName "foo") (ThisVersion (mkVersion [2,0])))
Instance details

Defined in Distribution.Types.PackageVersionConstraint

Parsec PkgconfigDependency 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Parsec PkgconfigName 
Instance details

Defined in Distribution.Types.PkgconfigName

Parsec PkgconfigVersion
>>> simpleParsec "1.0.2n" :: Maybe PkgconfigVersion
Just (PkgconfigVersion "1.0.2n")
>>> simpleParsec "0.3.5+ds" :: Maybe PkgconfigVersion
Nothing
Instance details

Defined in Distribution.Types.PkgconfigVersion

Parsec PkgconfigVersionRange 
Instance details

Defined in Distribution.Types.PkgconfigVersionRange

Parsec KnownRepoType 
Instance details

Defined in Distribution.Types.SourceRepo

Parsec RepoKind 
Instance details

Defined in Distribution.Types.SourceRepo

Methods

parsec :: CabalParsing m => m RepoKind #

Parsec RepoType 
Instance details

Defined in Distribution.Types.SourceRepo

Methods

parsec :: CabalParsing m => m RepoType #

Parsec TestType 
Instance details

Defined in Distribution.Types.TestType

Methods

parsec :: CabalParsing m => m TestType #

Parsec DefUnitId 
Instance details

Defined in Distribution.Types.UnitId

Methods

parsec :: CabalParsing m => m DefUnitId #

Parsec UnitId

The textual format for UnitId coincides with the format GHC accepts for -package-id.

Instance details

Defined in Distribution.Types.UnitId

Methods

parsec :: CabalParsing m => m UnitId #

Parsec UnqualComponentName 
Instance details

Defined in Distribution.Types.UnqualComponentName

Parsec Version 
Instance details

Defined in Distribution.Types.Version

Methods

parsec :: CabalParsing m => m Version #

Parsec VersionRange
>>> simpleParsec "^>= 3.4" :: Maybe VersionRange
Just (MajorBoundVersion (mkVersion [3,4]))

Small history:

-any and -none removed in 3.4 Use >=0 and <0 instead.

>>> map (`simpleParsec'` "-none") [CabalSpecV3_0, CabalSpecV3_4] :: [Maybe VersionRange]
[Just (EarlierVersion (mkVersion [0])),Nothing]

Set operations are introduced in 3.0

>>> map (`simpleParsec'` "^>= { 1.2 , 1.3 }") [CabalSpecV2_4, CabalSpecV3_0] :: [Maybe VersionRange]
[Nothing,Just (UnionVersionRanges (MajorBoundVersion (mkVersion [1,2])) (MajorBoundVersion (mkVersion [1,3])))]

^>= is introduced in 2.0

>>> map (`simpleParsec'` "^>=1.2") [CabalSpecV1_24, CabalSpecV2_0] :: [Maybe VersionRange]
[Nothing,Just (MajorBoundVersion (mkVersion [1,2]))]

-none is introduced in 1.22

>>> map (`simpleParsec'` "-none") [CabalSpecV1_20, CabalSpecV1_22] :: [Maybe VersionRange]
[Nothing,Just (EarlierVersion (mkVersion [0]))]

Operators are introduced in 1.8. Issues only a warning.

>>> map (`simpleParsecW'` "== 1 || ==2") [CabalSpecV1_6, CabalSpecV1_8] :: [Maybe VersionRange]
[Nothing,Just (UnionVersionRanges (ThisVersion (mkVersion [1])) (ThisVersion (mkVersion [2])))]

Wild-version ranges are introduced in 1.6. Issues only a warning.

>>> map (`simpleParsecW'` "== 1.2.*") [CabalSpecV1_4, CabalSpecV1_6] :: [Maybe VersionRange]
[Nothing,Just (IntersectVersionRanges (OrLaterVersion (mkVersion [1,2])) (EarlierVersion (mkVersion [1,3])))]
Instance details

Defined in Distribution.Types.VersionRange.Internal

Parsec Extension 
Instance details

Defined in Language.Haskell.Extension

Methods

parsec :: CabalParsing m => m Extension #

Parsec Language 
Instance details

Defined in Language.Haskell.Extension

Methods

parsec :: CabalParsing m => m Language #

Parsec InstallOutcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Parsec Outcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Methods

parsec :: CabalParsing m => m Outcome #

Parsec ReportLevel Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Methods

parsec :: CabalParsing m => m ReportLevel #

Parsec PreSolver Source # 
Instance details

Defined in Distribution.Client.Dependency.Types

Methods

parsec :: CabalParsing m => m PreSolver #

Parsec FilePathGlob Source # 
Instance details

Defined in Distribution.Client.Glob

Parsec FilePathGlobRel Source # 
Instance details

Defined in Distribution.Client.Glob

Parsec FilePathRoot Source # 
Instance details

Defined in Distribution.Client.Glob

Parsec ActiveRepoEntry Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Parsec ActiveRepos Source #

Note: empty string is not valid ActiveRepos.

>>> simpleParsec "" :: Maybe ActiveRepos
Nothing
>>> simpleParsec ":none" :: Maybe ActiveRepos
Just (ActiveRepos [])
>>> simpleParsec ":rest" :: Maybe ActiveRepos
Just (ActiveRepos [ActiveRepoRest CombineStrategyMerge])
>>> simpleParsec "hackage.haskell.org, :rest, head.hackage:override" :: Maybe ActiveRepos
Just (ActiveRepos [ActiveRepo (RepoName "hackage.haskell.org") CombineStrategyMerge,ActiveRepoRest CombineStrategyMerge,ActiveRepo (RepoName "head.hackage") CombineStrategyOverride])
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Methods

parsec :: CabalParsing m => m ActiveRepos #

Parsec CombineStrategy Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Parsec RepoIndexState Source # 
Instance details

Defined in Distribution.Client.IndexUtils.IndexState

Parsec TotalIndexState Source #
>>> simpleParsec "HEAD" :: Maybe TotalIndexState
Just (TIS IndexStateHead (fromList []))
>>> simpleParsec "" :: Maybe TotalIndexState
Nothing
>>> simpleParsec "hackage.haskell.org HEAD" :: Maybe TotalIndexState
Just (TIS IndexStateHead (fromList []))
>>> simpleParsec "2020-02-04T12:34:56Z, hackage.haskell.org HEAD" :: Maybe TotalIndexState
Just (TIS (IndexStateTime (TS 1580819696)) (fromList [(RepoName "hackage.haskell.org",IndexStateHead)]))
>>> simpleParsec "hackage.haskell.org 2020-02-04T12:34:56Z" :: Maybe TotalIndexState
Just (TIS IndexStateHead (fromList [(RepoName "hackage.haskell.org",IndexStateTime (TS 1580819696))]))
Instance details

Defined in Distribution.Client.IndexUtils.IndexState

Parsec Timestamp Source # 
Instance details

Defined in Distribution.Client.IndexUtils.Timestamp

Methods

parsec :: CabalParsing m => m Timestamp #

Parsec UserConstraint Source # 
Instance details

Defined in Distribution.Client.Targets

Parsec RelaxDepSubject Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Parsec RelaxDeps Source #
>>> simpleParsec "all" :: Maybe RelaxDeps
Just RelaxDepsAll
>>> simpleParsec "none" :: Maybe RelaxDeps
Just (RelaxDepsSome [])
>>> simpleParsec "*, *" :: Maybe RelaxDeps
Just RelaxDepsAll
>>> simpleParsec "*:*" :: Maybe RelaxDeps
Just RelaxDepsAll
>>> simpleParsec "foo:bar, quu:puu" :: Maybe RelaxDeps
Just (RelaxDepsSome [RelaxedDep (RelaxDepScopePackage (PackageName "foo")) RelaxDepModNone (RelaxDepSubjectPkg (PackageName "bar")),RelaxedDep (RelaxDepScopePackage (PackageName "quu")) RelaxDepModNone (RelaxDepSubjectPkg (PackageName "puu"))])

This is not a glitch, even it looks like:

>>> simpleParsec ", all" :: Maybe RelaxDeps
Just RelaxDepsAll
>>> simpleParsec "" :: Maybe RelaxDeps
Nothing
Instance details

Defined in Distribution.Client.Types.AllowNewer

Methods

parsec :: CabalParsing m => m RelaxDeps #

Parsec RelaxedDep Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Methods

parsec :: CabalParsing m => m RelaxedDep #

Parsec InstallMethod Source # 
Instance details

Defined in Distribution.Client.Types.InstallMethod

Parsec OverwritePolicy Source # 
Instance details

Defined in Distribution.Client.Types.OverwritePolicy

Parsec LocalRepo Source #

Note: doesn't parse localRepoSharedCache field.

Instance details

Defined in Distribution.Client.Types.Repo

Methods

parsec :: CabalParsing m => m LocalRepo #

Parsec RemoteRepo Source #

Note: serialised format represents RemoteRepo only partially.

Instance details

Defined in Distribution.Client.Types.Repo

Methods

parsec :: CabalParsing m => m RemoteRepo #

Parsec RepoName Source #
>>> simpleParsec "hackage.haskell.org" :: Maybe RepoName
Just (RepoName "hackage.haskell.org")
>>> simpleParsec "0123" :: Maybe RepoName
Nothing
Instance details

Defined in Distribution.Client.Types.RepoName

Methods

parsec :: CabalParsing m => m RepoName #

Parsec OnlyConstrained 
Instance details

Defined in Distribution.Solver.Types.Settings

Parsec Bool 
Instance details

Defined in Distribution.Parsec

Methods

parsec :: CabalParsing m => m Bool #

FieldGrammar Parsec ParsecFieldGrammar 
Instance details

Defined in Distribution.FieldGrammar.Parsec

Methods

blurFieldGrammar :: ALens' a b -> ParsecFieldGrammar b d -> ParsecFieldGrammar a d #

uniqueFieldAla :: (Parsec b, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> ParsecFieldGrammar s a #

booleanFieldDef :: FieldName -> ALens' s Bool -> Bool -> ParsecFieldGrammar s Bool #

optionalFieldAla :: (Parsec b, Newtype a b) => FieldName -> (a -> b) -> ALens' s (Maybe a) -> ParsecFieldGrammar s (Maybe a) #

optionalFieldDefAla :: (Parsec b, Newtype a b, Eq a) => FieldName -> (a -> b) -> ALens' s a -> a -> ParsecFieldGrammar s a #

freeTextField :: FieldName -> ALens' s (Maybe String) -> ParsecFieldGrammar s (Maybe String) #

freeTextFieldDef :: FieldName -> ALens' s String -> ParsecFieldGrammar s String #

freeTextFieldDefST :: FieldName -> ALens' s ShortText -> ParsecFieldGrammar s ShortText #

monoidalFieldAla :: (Parsec b, Monoid a, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> ParsecFieldGrammar s a #

prefixedFields :: FieldName -> ALens' s [(String, String)] -> ParsecFieldGrammar s [(String, String)] #

knownField :: FieldName -> ParsecFieldGrammar s () #

hiddenField :: ParsecFieldGrammar s a -> ParsecFieldGrammar s a #

deprecatedSince :: CabalSpecVersion -> String -> ParsecFieldGrammar s a -> ParsecFieldGrammar s a #

removedIn :: CabalSpecVersion -> String -> ParsecFieldGrammar s a -> ParsecFieldGrammar s a #

availableSince :: CabalSpecVersion -> a -> ParsecFieldGrammar s a -> ParsecFieldGrammar s a #

availableSinceWarn :: CabalSpecVersion -> ParsecFieldGrammar s a -> ParsecFieldGrammar s a #

Parsec a => Parsec (MQuoted a) 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (MQuoted a) #

Parsec a => Parsec (Identity a) 
Instance details

Defined in Distribution.Parsec

Methods

parsec :: CabalParsing m => m (Identity a) #

Parsec (SymbolicPath from to) 
Instance details

Defined in Distribution.Utils.Path

Methods

parsec :: CabalParsing m => m (SymbolicPath from to) #

(Newtype a b, Sep sep, Parsec b) => Parsec (List sep b a) 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (List sep b a) #

(Newtype a b, Sep sep, Parsec b) => Parsec (NonEmpty' sep b a) 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (NonEmpty' sep b a) #

(Newtype a b, Ord a, Sep sep, Parsec b) => Parsec (Set' sep b a) 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (Set' sep b a) #

class (CharParsing m, MonadPlus m, MonadFail m) => CabalParsing (m :: Type -> Type) #

Parsing class which

  • can report Cabal parser warnings.
  • knows cabal-version we work with

Minimal complete definition

parsecWarning, askCabalSpecVersion

class Pretty a where #

Minimal complete definition

pretty

Methods

pretty :: a -> Doc #

prettyVersioned :: CabalSpecVersion -> a -> Doc #

Instances

Instances details
Pretty HaddockTarget 
Instance details

Defined in Distribution.Simple.Setup

Pretty TestShowDetails 
Instance details

Defined in Distribution.Simple.Setup

Pretty Verbosity 
Instance details

Defined in Distribution.Verbosity

Pretty OpenModule 
Instance details

Defined in Distribution.Backpack

Pretty OpenUnitId 
Instance details

Defined in Distribution.Backpack

Pretty AbiTag 
Instance details

Defined in Distribution.Compiler

Pretty CompilerFlavor 
Instance details

Defined in Distribution.Compiler

Pretty CompilerId 
Instance details

Defined in Distribution.Compiler

Pretty FilePathNT 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty SpecLicense 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty SpecVersion 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty TestedWith 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty Token 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty Token' 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty License 
Instance details

Defined in Distribution.License

Pretty ModuleName 
Instance details

Defined in Distribution.ModuleName

Pretty CompatFilePath 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Pretty CompatLicenseFile 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Pretty License 
Instance details

Defined in Distribution.SPDX.License

Pretty LicenseExceptionId 
Instance details

Defined in Distribution.SPDX.LicenseExceptionId

Pretty LicenseExpression 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Pretty SimpleLicenseExpression 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Pretty LicenseId 
Instance details

Defined in Distribution.SPDX.LicenseId

Pretty LicenseRef 
Instance details

Defined in Distribution.SPDX.LicenseReference

Pretty Arch 
Instance details

Defined in Distribution.System

Pretty OS 
Instance details

Defined in Distribution.System

Pretty Platform 
Instance details

Defined in Distribution.System

Pretty AbiDependency 
Instance details

Defined in Distribution.Types.AbiDependency

Pretty AbiHash 
Instance details

Defined in Distribution.Types.AbiHash

Pretty BenchmarkType 
Instance details

Defined in Distribution.Types.BenchmarkType

Pretty BuildType 
Instance details

Defined in Distribution.Types.BuildType

Pretty ComponentId 
Instance details

Defined in Distribution.Types.ComponentId

Pretty ComponentName 
Instance details

Defined in Distribution.Types.ComponentName

Pretty Dependency
>>> prettyShow $ Dependency "pkg" anyVersion mainLibSet
"pkg"
>>> prettyShow $ Dependency "pkg" anyVersion $ NES.insert (LSubLibName "sublib") mainLibSet
"pkg:{pkg, sublib}"
>>> prettyShow $ Dependency "pkg" anyVersion $ NES.singleton (LSubLibName "sublib")
"pkg:sublib"
>>> prettyShow $ Dependency "pkg" anyVersion $ NES.insert (LSubLibName "sublib-b") $ NES.singleton (LSubLibName "sublib-a")
"pkg:{sublib-a, sublib-b}"
Instance details

Defined in Distribution.Types.Dependency

Pretty ExeDependency 
Instance details

Defined in Distribution.Types.ExeDependency

Pretty ExecutableScope 
Instance details

Defined in Distribution.Types.ExecutableScope

Pretty ExposedModule 
Instance details

Defined in Distribution.Types.ExposedModule

Pretty FlagAssignment

Since: Cabal-syntax-3.4.0.0

Instance details

Defined in Distribution.Types.Flag

Pretty FlagName 
Instance details

Defined in Distribution.Types.Flag

Pretty LibVersionInfo 
Instance details

Defined in Distribution.Types.ForeignLib

Pretty ForeignLibOption 
Instance details

Defined in Distribution.Types.ForeignLibOption

Pretty ForeignLibType 
Instance details

Defined in Distribution.Types.ForeignLibType

Pretty IncludeRenaming 
Instance details

Defined in Distribution.Types.IncludeRenaming

Pretty LegacyExeDependency 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Pretty LibraryVisibility 
Instance details

Defined in Distribution.Types.LibraryVisibility

Pretty Mixin 
Instance details

Defined in Distribution.Types.Mixin

Pretty Module 
Instance details

Defined in Distribution.Types.Module

Pretty ModuleReexport 
Instance details

Defined in Distribution.Types.ModuleReexport

Pretty ModuleRenaming 
Instance details

Defined in Distribution.Types.ModuleRenaming

Pretty MungedPackageId
>>> prettyShow $ MungedPackageId (MungedPackageName "servant" LMainLibName) (mkVersion [1,2,3])
"servant-1.2.3"
>>> prettyShow $ MungedPackageId (MungedPackageName "servant" (LSubLibName "lackey")) (mkVersion [0,1,2])
"z-servant-z-lackey-0.1.2"
Instance details

Defined in Distribution.Types.MungedPackageId

Pretty MungedPackageName

Computes the package name for a library. If this is the public library, it will just be the original package name; otherwise, it will be a munged package name recording the original package name as well as the name of the internal library.

A lot of tooling in the Haskell ecosystem assumes that if something is installed to the package database with the package name foo, then it actually is an entry for the (only public) library in package foo. With internal packages, this is not necessarily true: a public library as well as arbitrarily many internal libraries may come from the same package. To prevent tools from getting confused in this case, the package name of these internal libraries is munged so that they do not conflict the public library proper. A particular case where this matters is ghc-pkg: if we don't munge the package name, the inplace registration will OVERRIDE a different internal library.

We munge into a reserved namespace, "z-", and encode both the component name and the package name of an internal library using the following format:

compat-pkg-name ::= "z-" package-name "-z-" library-name

where package-name and library-name have "-" ( "z" + ) "-" segments encoded by adding an extra "z".

When we have the public library, the compat-pkg-name is just the package-name, no surprises there!

>>> prettyShow $ MungedPackageName "servant" LMainLibName
"servant"
>>> prettyShow $ MungedPackageName "servant" (LSubLibName "lackey")
"z-servant-z-lackey"
Instance details

Defined in Distribution.Types.MungedPackageName

Pretty PackageIdentifier 
Instance details

Defined in Distribution.Types.PackageId

Pretty PackageName 
Instance details

Defined in Distribution.Types.PackageName

Pretty PackageVersionConstraint 
Instance details

Defined in Distribution.Types.PackageVersionConstraint

Pretty PkgconfigDependency 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Pretty PkgconfigName 
Instance details

Defined in Distribution.Types.PkgconfigName

Pretty PkgconfigVersion 
Instance details

Defined in Distribution.Types.PkgconfigVersion

Pretty PkgconfigVersionRange 
Instance details

Defined in Distribution.Types.PkgconfigVersionRange

Pretty KnownRepoType 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty RepoKind 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty RepoType 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty TestType 
Instance details

Defined in Distribution.Types.TestType

Pretty DefUnitId 
Instance details

Defined in Distribution.Types.UnitId

Pretty UnitId

The textual format for UnitId coincides with the format GHC accepts for -package-id.

Instance details

Defined in Distribution.Types.UnitId

Pretty UnqualComponentName 
Instance details

Defined in Distribution.Types.UnqualComponentName

Pretty Version 
Instance details

Defined in Distribution.Types.Version

Pretty VersionRange
>>> fmap pretty (simpleParsec' CabalSpecV1_6 "== 3.2.*" :: Maybe VersionRange)
Just >=3.2 && <3.3
>>> fmap (prettyVersioned CabalSpecV1_6) (simpleParsec' CabalSpecV1_6 "== 3.2.*" :: Maybe VersionRange)
Just ==3.2.*
>>> fmap pretty (simpleParsec' CabalSpecV1_6 "-any" :: Maybe VersionRange)
Just >=0
>>> fmap (prettyVersioned CabalSpecV1_6) (simpleParsec' CabalSpecV1_6 "-any" :: Maybe VersionRange)
Just >=0
Instance details

Defined in Distribution.Types.VersionRange.Internal

Pretty Extension 
Instance details

Defined in Language.Haskell.Extension

Pretty KnownExtension 
Instance details

Defined in Language.Haskell.Extension

Pretty Language 
Instance details

Defined in Language.Haskell.Extension

Pretty InstallOutcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Pretty Outcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Pretty ReportLevel Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Pretty PreSolver Source # 
Instance details

Defined in Distribution.Client.Dependency.Types

Pretty FilePathGlob Source # 
Instance details

Defined in Distribution.Client.Glob

Pretty FilePathGlobRel Source # 
Instance details

Defined in Distribution.Client.Glob

Pretty FilePathRoot Source # 
Instance details

Defined in Distribution.Client.Glob

Pretty ActiveRepoEntry Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty ActiveRepos Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty CombineStrategy Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty RepoIndexState Source # 
Instance details

Defined in Distribution.Client.IndexUtils.IndexState

Pretty TotalIndexState Source # 
Instance details

Defined in Distribution.Client.IndexUtils.IndexState

Pretty Timestamp Source # 
Instance details

Defined in Distribution.Client.IndexUtils.Timestamp

Pretty UserConstraint Source # 
Instance details

Defined in Distribution.Client.Targets

Pretty RelaxDepSubject Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Pretty RelaxDeps Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Pretty RelaxedDep Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Pretty InstallMethod Source # 
Instance details

Defined in Distribution.Client.Types.InstallMethod

Pretty OverwritePolicy Source # 
Instance details

Defined in Distribution.Client.Types.OverwritePolicy

Pretty LocalRepo Source # 
Instance details

Defined in Distribution.Client.Types.Repo

Pretty RemoteRepo Source # 
Instance details

Defined in Distribution.Client.Types.Repo

Pretty RepoName Source # 
Instance details

Defined in Distribution.Client.Types.RepoName

Pretty Component 
Instance details

Defined in Distribution.Solver.Types.ComponentDeps

Pretty OnlyConstrained 
Instance details

Defined in Distribution.Solver.Types.Settings

Pretty Doc

Since: Cabal-syntax-3.4.0.0

Instance details

Defined in Distribution.Pretty

Pretty Bool 
Instance details

Defined in Distribution.Pretty

Pretty Int 
Instance details

Defined in Distribution.Pretty

FieldGrammar Pretty PrettyFieldGrammar 
Instance details

Defined in Distribution.FieldGrammar.Pretty

Methods

blurFieldGrammar :: ALens' a b -> PrettyFieldGrammar b d -> PrettyFieldGrammar a d #

uniqueFieldAla :: (Pretty b, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> PrettyFieldGrammar s a #

booleanFieldDef :: FieldName -> ALens' s Bool -> Bool -> PrettyFieldGrammar s Bool #

optionalFieldAla :: (Pretty b, Newtype a b) => FieldName -> (a -> b) -> ALens' s (Maybe a) -> PrettyFieldGrammar s (Maybe a) #

optionalFieldDefAla :: (Pretty b, Newtype a b, Eq a) => FieldName -> (a -> b) -> ALens' s a -> a -> PrettyFieldGrammar s a #

freeTextField :: FieldName -> ALens' s (Maybe String) -> PrettyFieldGrammar s (Maybe String) #

freeTextFieldDef :: FieldName -> ALens' s String -> PrettyFieldGrammar s String #

freeTextFieldDefST :: FieldName -> ALens' s ShortText -> PrettyFieldGrammar s ShortText #

monoidalFieldAla :: (Pretty b, Monoid a, Newtype a b) => FieldName -> (a -> b) -> ALens' s a -> PrettyFieldGrammar s a #

prefixedFields :: FieldName -> ALens' s [(String, String)] -> PrettyFieldGrammar s [(String, String)] #

knownField :: FieldName -> PrettyFieldGrammar s () #

hiddenField :: PrettyFieldGrammar s a -> PrettyFieldGrammar s a #

deprecatedSince :: CabalSpecVersion -> String -> PrettyFieldGrammar s a -> PrettyFieldGrammar s a #

removedIn :: CabalSpecVersion -> String -> PrettyFieldGrammar s a -> PrettyFieldGrammar s a #

availableSince :: CabalSpecVersion -> a -> PrettyFieldGrammar s a -> PrettyFieldGrammar s a #

availableSinceWarn :: CabalSpecVersion -> PrettyFieldGrammar s a -> PrettyFieldGrammar s a #

Pretty a => Pretty (MQuoted a) 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty a => Pretty (Identity a) 
Instance details

Defined in Distribution.Pretty

Pretty (SymbolicPath from to) 
Instance details

Defined in Distribution.Utils.Path

(Newtype a b, Sep sep, Pretty b) => Pretty (List sep b a) 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

pretty :: List sep b a -> Doc #

prettyVersioned :: CabalSpecVersion -> List sep b a -> Doc #

(Newtype a b, Sep sep, Pretty b) => Pretty (NonEmpty' sep b a) 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

pretty :: NonEmpty' sep b a -> Doc #

prettyVersioned :: CabalSpecVersion -> NonEmpty' sep b a -> Doc #

(Newtype a b, Sep sep, Pretty b) => Pretty (Set' sep b a) 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

pretty :: Set' sep b a -> Doc #

prettyVersioned :: CabalSpecVersion -> Set' sep b a -> Doc #