cabal-install-3.8.1.0: The command-line interface for Cabal and Hackage.
Safe HaskellNone
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
Bounded Verbosity 
Instance details

Defined in Distribution.Verbosity

Enum Verbosity 
Instance details

Defined in Distribution.Verbosity

Eq Verbosity 
Instance details

Defined in Distribution.Verbosity

Ord Verbosity 
Instance details

Defined in Distribution.Verbosity

Read Verbosity 
Instance details

Defined in Distribution.Verbosity

Show Verbosity 
Instance details

Defined in Distribution.Verbosity

Generic Verbosity 
Instance details

Defined in Distribution.Verbosity

Associated Types

type Rep Verbosity :: Type -> Type #

Binary Verbosity 
Instance details

Defined in Distribution.Verbosity

Structured Verbosity 
Instance details

Defined in Distribution.Verbosity

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

type Rep Verbosity 
Instance details

Defined in Distribution.Verbosity

type Rep Verbosity = D1 ('MetaData "Verbosity" "Distribution.Verbosity" "Cabal-3.8.1.0-B0R5uDiDOgc9Mcr4OAtXbo" '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 Bool 
Instance details

Defined in Distribution.Parsec

Methods

parsec :: CabalParsing m => m Bool #

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 PkgconfigName 
Instance details

Defined in Distribution.Types.PkgconfigName

Parsec AbiHash 
Instance details

Defined in Distribution.Types.AbiHash

Methods

parsec :: CabalParsing m => m AbiHash #

Parsec DefUnitId 
Instance details

Defined in Distribution.Types.UnitId

Methods

parsec :: CabalParsing m => m DefUnitId #

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 Platform 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m Platform #

Parsec OS 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m OS #

Parsec Arch 
Instance details

Defined in Distribution.System

Methods

parsec :: CabalParsing m => m Arch #

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 IncludeRenaming 
Instance details

Defined in Distribution.Types.IncludeRenaming

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 AbiTag 
Instance details

Defined in Distribution.Compiler

Methods

parsec :: CabalParsing m => m AbiTag #

Parsec CompilerId 
Instance details

Defined in Distribution.Compiler

Methods

parsec :: CabalParsing m => m CompilerId #

Parsec CompilerFlavor 
Instance details

Defined in Distribution.Compiler

Parsec Module 
Instance details

Defined in Distribution.Types.Module

Methods

parsec :: CabalParsing m => m Module #

Parsec ModuleRenaming 
Instance details

Defined in Distribution.Types.ModuleRenaming

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 ComponentId 
Instance details

Defined in Distribution.Types.ComponentId

Methods

parsec :: CabalParsing m => m ComponentId #

Parsec PackageName 
Instance details

Defined in Distribution.Types.PackageName

Methods

parsec :: CabalParsing m => m PackageName #

Parsec ModuleName 
Instance details

Defined in Distribution.ModuleName

Methods

parsec :: CabalParsing m => m ModuleName #

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 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 Version 
Instance details

Defined in Distribution.Types.Version

Methods

parsec :: CabalParsing m => m Version #

Parsec ComponentName 
Instance details

Defined in Distribution.Types.ComponentName

Parsec License 
Instance details

Defined in Distribution.License

Methods

parsec :: CabalParsing m => m License #

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 FilePathNT 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m FilePathNT #

Parsec SpecVersion 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m SpecVersion #

Parsec SpecLicense 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m SpecLicense #

Parsec TestedWith 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m TestedWith #

Parsec LibVersionInfo 
Instance details

Defined in Distribution.Types.ForeignLib

Parsec AbiDependency 
Instance details

Defined in Distribution.Types.AbiDependency

Parsec BenchmarkType 
Instance details

Defined in Distribution.Types.BenchmarkType

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 LegacyExeDependency 
Instance details

Defined in Distribution.Types.LegacyExeDependency

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 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 ExposedModule 
Instance details

Defined in Distribution.Types.ExposedModule

Parsec TestType 
Instance details

Defined in Distribution.Types.TestType

Methods

parsec :: CabalParsing m => m TestType #

Parsec ModuleReexport 
Instance details

Defined in Distribution.Types.ModuleReexport

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 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 LicenseExpression 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Parsec SimpleLicenseExpression 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Parsec LicenseExceptionId 
Instance details

Defined in Distribution.SPDX.LicenseExceptionId

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 BuildType 
Instance details

Defined in Distribution.Types.BuildType

Methods

parsec :: CabalParsing m => m BuildType #

Parsec ExecutableScope 
Instance details

Defined in Distribution.Types.ExecutableScope

Parsec FlagName 
Instance details

Defined in Distribution.Types.Flag

Methods

parsec :: CabalParsing m => m FlagName #

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 ForeignLibOption 
Instance details

Defined in Distribution.Types.ForeignLibOption

Parsec ForeignLibType 
Instance details

Defined in Distribution.Types.ForeignLibType

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 LibraryVisibility 
Instance details

Defined in Distribution.Types.LibraryVisibility

Parsec UnqualComponentName 
Instance details

Defined in Distribution.Types.UnqualComponentName

Parsec PkgconfigDependency 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Parsec PkgconfigVersionRange 
Instance details

Defined in Distribution.Types.PkgconfigVersionRange

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 RepoKind 
Instance details

Defined in Distribution.Types.SourceRepo

Methods

parsec :: CabalParsing m => m RepoKind #

Parsec KnownRepoType 
Instance details

Defined in Distribution.Types.SourceRepo

Parsec RepoType 
Instance details

Defined in Distribution.Types.SourceRepo

Methods

parsec :: CabalParsing m => m RepoType #

Parsec OnlyConstrained 
Instance details

Defined in Distribution.Solver.Types.Settings

Parsec Outcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Methods

parsec :: CabalParsing m => m Outcome #

Parsec InstallOutcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

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 FilePathRoot Source # 
Instance details

Defined in Distribution.Client.Glob

Parsec FilePathGlobRel Source # 
Instance details

Defined in Distribution.Client.Glob

Parsec FilePathGlob Source # 
Instance details

Defined in Distribution.Client.Glob

Parsec Timestamp Source # 
Instance details

Defined in Distribution.Client.IndexUtils.Timestamp

Methods

parsec :: CabalParsing m => m Timestamp #

Parsec RelaxDepSubject Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Parsec RelaxedDep Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Methods

parsec :: CabalParsing m => m RelaxedDep #

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 InstallMethod Source # 
Instance details

Defined in Distribution.Client.Types.InstallMethod

Parsec OverwritePolicy Source # 
Instance details

Defined in Distribution.Client.Types.OverwritePolicy

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 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 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 CombineStrategy Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

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 CompatFilePath 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Methods

parsec :: CabalParsing m => m CompatFilePath #

Parsec CompatLicenseFile 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Methods

parsec :: CabalParsing m => m CompatLicenseFile #

Parsec UserConstraint Source # 
Instance details

Defined in Distribution.Client.Targets

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 (Identity a) 
Instance details

Defined in Distribution.Parsec

Methods

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

Parsec a => Parsec (MQuoted a) 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Methods

parsec :: CabalParsing m => m (MQuoted 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, 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) #

(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) #

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 Bool 
Instance details

Defined in Distribution.Pretty

Pretty Int 
Instance details

Defined in Distribution.Pretty

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 KnownExtension 
Instance details

Defined in Language.Haskell.Extension

Pretty Extension 
Instance details

Defined in Language.Haskell.Extension

Pretty Language 
Instance details

Defined in Language.Haskell.Extension

Pretty PkgconfigName 
Instance details

Defined in Distribution.Types.PkgconfigName

Pretty AbiHash 
Instance details

Defined in Distribution.Types.AbiHash

Pretty DefUnitId 
Instance details

Defined in Distribution.Types.UnitId

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 Platform 
Instance details

Defined in Distribution.System

Pretty OS 
Instance details

Defined in Distribution.System

Pretty Arch 
Instance details

Defined in Distribution.System

Pretty OpenUnitId 
Instance details

Defined in Distribution.Backpack

Pretty IncludeRenaming 
Instance details

Defined in Distribution.Types.IncludeRenaming

Pretty PackageIdentifier 
Instance details

Defined in Distribution.Types.PackageId

Pretty AbiTag 
Instance details

Defined in Distribution.Compiler

Pretty CompilerId 
Instance details

Defined in Distribution.Compiler

Pretty CompilerFlavor 
Instance details

Defined in Distribution.Compiler

Pretty Doc

Since: Cabal-syntax-3.4.0.0

Instance details

Defined in Distribution.Pretty

Pretty Module 
Instance details

Defined in Distribution.Types.Module

Pretty ModuleRenaming 
Instance details

Defined in Distribution.Types.ModuleRenaming

Pretty UnitId

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

Instance details

Defined in Distribution.Types.UnitId

Pretty ComponentId 
Instance details

Defined in Distribution.Types.ComponentId

Pretty PackageName 
Instance details

Defined in Distribution.Types.PackageName

Pretty ModuleName 
Instance details

Defined in Distribution.ModuleName

Pretty OpenModule 
Instance details

Defined in Distribution.Backpack

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 Version 
Instance details

Defined in Distribution.Types.Version

Pretty ComponentName 
Instance details

Defined in Distribution.Types.ComponentName

Pretty License 
Instance details

Defined in Distribution.License

Pretty Token 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty Token' 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty FilePathNT 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty SpecVersion 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty SpecLicense 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty TestedWith 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

Pretty LibVersionInfo 
Instance details

Defined in Distribution.Types.ForeignLib

Pretty AbiDependency 
Instance details

Defined in Distribution.Types.AbiDependency

Pretty BenchmarkType 
Instance details

Defined in Distribution.Types.BenchmarkType

Pretty ExeDependency 
Instance details

Defined in Distribution.Types.ExeDependency

Pretty LegacyExeDependency 
Instance details

Defined in Distribution.Types.LegacyExeDependency

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 PackageVersionConstraint 
Instance details

Defined in Distribution.Types.PackageVersionConstraint

Pretty ExposedModule 
Instance details

Defined in Distribution.Types.ExposedModule

Pretty TestType 
Instance details

Defined in Distribution.Types.TestType

Pretty ModuleReexport 
Instance details

Defined in Distribution.Types.ModuleReexport

Pretty Mixin 
Instance details

Defined in Distribution.Types.Mixin

Pretty License 
Instance details

Defined in Distribution.SPDX.License

Pretty LicenseExpression 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Pretty SimpleLicenseExpression 
Instance details

Defined in Distribution.SPDX.LicenseExpression

Pretty LicenseExceptionId 
Instance details

Defined in Distribution.SPDX.LicenseExceptionId

Pretty LicenseId 
Instance details

Defined in Distribution.SPDX.LicenseId

Pretty LicenseRef 
Instance details

Defined in Distribution.SPDX.LicenseReference

Pretty BuildType 
Instance details

Defined in Distribution.Types.BuildType

Pretty ExecutableScope 
Instance details

Defined in Distribution.Types.ExecutableScope

Pretty FlagName 
Instance details

Defined in Distribution.Types.Flag

Pretty FlagAssignment

Since: Cabal-syntax-3.4.0.0

Instance details

Defined in Distribution.Types.Flag

Pretty ForeignLibOption 
Instance details

Defined in Distribution.Types.ForeignLibOption

Pretty ForeignLibType 
Instance details

Defined in Distribution.Types.ForeignLibType

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 LibraryVisibility 
Instance details

Defined in Distribution.Types.LibraryVisibility

Pretty UnqualComponentName 
Instance details

Defined in Distribution.Types.UnqualComponentName

Pretty PkgconfigDependency 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Pretty PkgconfigVersionRange 
Instance details

Defined in Distribution.Types.PkgconfigVersionRange

Pretty PkgconfigVersion 
Instance details

Defined in Distribution.Types.PkgconfigVersion

Pretty RepoKind 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty KnownRepoType 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty RepoType 
Instance details

Defined in Distribution.Types.SourceRepo

Pretty OnlyConstrained 
Instance details

Defined in Distribution.Solver.Types.Settings

Pretty Component 
Instance details

Defined in Distribution.Solver.Types.ComponentDeps

Pretty Outcome Source # 
Instance details

Defined in Distribution.Client.BuildReports.Types

Pretty InstallOutcome 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 FilePathRoot Source # 
Instance details

Defined in Distribution.Client.Glob

Pretty FilePathGlobRel Source # 
Instance details

Defined in Distribution.Client.Glob

Pretty FilePathGlob Source # 
Instance details

Defined in Distribution.Client.Glob

Pretty Timestamp Source # 
Instance details

Defined in Distribution.Client.IndexUtils.Timestamp

Pretty RelaxDepSubject Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Pretty RelaxedDep Source # 
Instance details

Defined in Distribution.Client.Types.AllowNewer

Pretty RelaxDeps 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 RepoName Source # 
Instance details

Defined in Distribution.Client.Types.RepoName

Pretty LocalRepo Source # 
Instance details

Defined in Distribution.Client.Types.Repo

Pretty RemoteRepo Source # 
Instance details

Defined in Distribution.Client.Types.Repo

Pretty RepoIndexState Source # 
Instance details

Defined in Distribution.Client.IndexUtils.IndexState

Pretty TotalIndexState Source # 
Instance details

Defined in Distribution.Client.IndexUtils.IndexState

Pretty CombineStrategy Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty ActiveRepoEntry Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty ActiveRepos Source # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty CompatFilePath 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Methods

pretty :: CompatFilePath -> Doc #

prettyVersioned :: CabalSpecVersion -> CompatFilePath -> Doc #

Pretty CompatLicenseFile 
Instance details

Defined in Distribution.PackageDescription.FieldGrammar

Methods

pretty :: CompatLicenseFile -> Doc #

prettyVersioned :: CabalSpecVersion -> CompatLicenseFile -> Doc #

Pretty UserConstraint Source # 
Instance details

Defined in Distribution.Client.Targets

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 (Identity a) 
Instance details

Defined in Distribution.Pretty

Pretty a => Pretty (MQuoted a) 
Instance details

Defined in Distribution.FieldGrammar.Newtypes

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 (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 #

(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 #